Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.152.162] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте
Только начал осваивать xsl преобразования, не могу разобраться со схемой. Есть исходная XML вида <Structure> <Food name="Яблоко"> <IsFruit>true</IsFruit> </Food> <Food name="Картофель"> <IsFruit>false</IsFruit> </Food> </Structure> На выходе нужно получить <Structure> <Fruit name="Яблоко"> </Fruit> <Vegan name = "Картофель"> </Vegan> </Structure> Исходную xml пытаюсь преборазовать при помощи следующей схемы: <xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform""> <xsl:output method=""xml"" encoding=""UTF-8""/> <xsl:template match=""node() | @*""> <xsl:copy> <xsl:apply-templates select=""@* | node()""/> </xsl:copy> </xsl:template> <xsl:for-each select = template match=""Structure/Food/""> <xsl:if test=""IsFruit@value = true""> <Fruit name = xsl:value-of select=""name"" / > </xsl:if> <xsl:if test=""IsFruit@value = false""> <Vegan name = xsl:value-of select=""name"" / > </xsl:if> </xsl:for-each> </xsl:stylesheet> Но ничего не получается, где ошибка? |
Сообщ.
#2
,
|
|
|
почему везде 4 двойных кавычек?
|
Сообщ.
#3
,
|
|
|
Прога ругается на эту строку:
Цитата Tammuz @ <xsl:for-each select = template match="Structure/Food/"> Цитата Severity: fatal Description: Open quote is expected for attribute "select" associated with an element type "xsl:for-each". |
Сообщ.
#4
,
|
|
|
У тебя вообще тут что-то странное, for-each это одно, а template match - другое. Примеры:
<xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:for-each select="$HEX_CMD_GRAPH_ARC_RELATIONS/RELATION[HARC_HARC_ID=$arc_id and HPRD_HPRD_ID != 0]"> <xsl:call-template name="hex-print_arc"> ... ... |
Сообщ.
#5
,
|
|
|
Твой xml:
<?xml version="1.0" encoding="UTF-8"?> <Structure> <Food name="Яблоко"> <IsFruit>true</IsFruit> </Food> <Food name="Картофель"> <IsFruit>false</IsFruit> </Food> </Structure> Пользуешь этот xsl: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <Structure><xsl:apply-templates select="//Food" /></Structure> </xsl:template> <xsl:template match="Food"> <xsl:if test="IsFruit='true'"><Fruit name="{@name}" ></Fruit></xsl:if> <xsl:if test="IsFruit='false'"><Vegan name="{@name}" ></Vegan></xsl:if> </xsl:template> </xsl:stylesheet> На выходе результат: <?xml version="1.0" encoding="UTF-8"?> <Structure> <Fruit name="Яблоко"/> <Vegan name="Картофель"/> </Structure> |