正确地改述我的问题:
我有XSLT,我需要检查特定数据的节点值。 例如。 (伪代码):
If only H occurs then set target element value as 'H'
Else if
Only B or N then set target element value as 'BN'
如果是源XML:
<n1>N</n1>
<n1>B</n1>
<n1>N</n1>
目标节点: BN
如果是源XML:
<n1>H</n1>
<n1>H</n1>
<n1>H</n1>
目标节点: ħ
没有属性。我只需要设置满足目标节点条件的文本。
我可以使用类似的东西:
<xsl:variable name="elements">
<xsl:for-each select="/test/elem">
<xsl:value-of select="."/>
<xsl:if test="position() < last()">
</xsl:if>
</xsl:for-each>
</xsl:variable>
以上是否给了我所有元素值的concat然后我可以检查一下是否包含x然后我可以做一个设置文本?
答案 0 :(得分:1)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:variable name="value">
<xsl:choose>
<xsl:when test="/root[not(n1 != 'H')]">
<xsl:value-of select="'H'"/>
</xsl:when>
<xsl:when test="/root[not(n1[. != 'B' and . != 'N'])]">
<xsl:value-of select="'BN'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'Something else'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:text>$value = </xsl:text>
<xsl:value-of select="$value"/>
</xsl:template>
</xsl:stylesheet>
<root>
<n1>H</n1>
<n1>H</n1>
<n1>H</n1>
</root>
$value = H
与
类似<root>
<n1>N</n1>
<n1>B</n1>
<n1>N</n1>
</root>
或
<root>
<n1>N</n1>
<n1>N</n1>
<n1>N</n1>
</root>
我们得到了
$value = BN
并且
<root>
<n1>N</n1>
<n1>B</n1>
<n1>x</n1>
</root>
或
<root>
<n1>N</n1>
<n1>B</n1>
<n1>H</n1>
</root>
我们得到了
$value = Something else
字符串H
,BN
或Something else
是变量的值。您可以将其设置为您创建的新元素的内容,而不仅仅是输出该变量的值。