我有以下结构:
<root>
<elements>
<element>
<key>1</key>
<key2>10</key2>
</element>
<element>
<key>2</key>
<key2>100</key2>
</element>
</elements>
</root>
我想创建一个
块<newelement></newelement>
例如,key
的值为2
且key2
的值不是''
为了选择元素,这个XPath可以很好地工作:
/root/elements/element/key[text() = '2']/../key2[text() != '']
但当我将其加入xsl:if
时,转换将无法创建我想要的newelement
<xsl:if test="/root/elements/element/key[text() = '2']/../key2 != ''">
<newelement></newelement>
</xsl:if>
我错过了什么?
答案 0 :(得分:0)
<root>
<elements>
<element>
<key>2</key>
<key2>100</key2>
</element>
<element>
<key>2</key>
<key2></key2>
</element>
</elements>
</root>
XSLT代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="elements">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>
<xsl:template match="element">
<xsl:variable name="valueKey2" select="key2"/>
<xsl:variable name="nameKey2" select="key2/name()"/>
<xsl:if test="key[text() = '2'] and $valueKey2 != ''">
<newelement>
<!--use key2 as attribute of <newelement>-->
<xsl:attribute name="{$nameKey2}"><xsl:value-of select="$valueKey2"/></xsl:attribute>
<!--use key2 inside <newelemnt>-->
<xsl:value-of select="$valueKey2"/>
</newelement>
</xsl:if>
</xsl:template>
</xsl:stylesheet>