我有以下代码片段
<xsl:variable name="cId" value="c001" />
<clients>
<c001>Mario</c001>
<c002>Luigi</c002>
</clients>
根据变量的值,我需要在客户端下选择正确的元素。
例如。变量cId的值为c001。 有没有办法让我使用XPATH或XSLT选择c001的值?
我可以这样做,但似乎for-loop有点过于杀人
<xsl:variable name="cId" value="c001" />
<xsl:for-each select="/clients/*">
<xsl:variable name="cNode" select="local-name()"/>
<xsl:if test="$cNode = $cId">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
上面的代码将返回“Mario”
感谢您的帮助。
答案 0 :(得分:1)
这个问题不是很清楚,但你可能想要这样的东西:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<my:catalog>
<catalog>
<client>
<clientid>c001</clientid>
<clientid>c003</clientid>
<clientid>c004</clientid>
<clientid>c005</clientid>
</client>
</catalog>
</my:catalog>
<xsl:variable name="vCat"
select="document('')/*/my:catalog"/>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select=
"/clients/*
[name() = $vCat/catalog/client/clientid]
/text()
"/>
</xsl:template>
</xsl:stylesheet>
将此转换应用于以下XML文档:
<clients>
<c001>Stars Company</c001>
<c002>Bold Unregistered</c002>
</clients>
生成了想要的结果:
Stars Company