如何将变量与路径搜索结合起来
这是xml的样子
<FIELD Name="User1Transmission.DocumentID" Value=""></<FIELD
<FIELD Name="User2Transmission.DocumentID" Value=""></<FIELD
<FIELD Name="User3Transmission.DocumentID" Value=""></<FIELD
<FIELD Name="User4Transmission.DocumentID" Value=""></<FIELD
更新: 仔细检查后,我相信xml如下
<FIELD>
<NAME>User1Transmission.DocumentID</NAME>
<VALUE></VALUE
</FIELD>
<FIELD>
<NAME>User2Transmission.DocumentID</NAME>
<VALUE></VALUE
</FIELD>
尽管这只是一个示例,但User3,4也可能不存在。因此,我试图根据用户查找信息。
我知道我可以这样获取每个用户的信息
<DocumentID><xsl:value-of select="//FIELD[NAME='User1Transmission.DocumentID']/VALUE"/></DocumentID>
但是我不知道该值是否会一直存在。
我创建了一个变量计数,该变量计数使我可以选择User1,User2等,但是我无法将变量与路径结合起来。
我尝试以下
<DocumentID><xsl:value-of select="//FIELD[NAME='User[$count]Transmission.DocumentID']/VALUE"/></DocumentID>
<DocumentID><xsl:value-of select="//FIELD[NAME='concat('User',$count,'Transmission.DocumentID')]/VALUE"/></DocumentID>
但是它们似乎都失败了。
答案 0 :(得分:1)
考虑以下示例:
XML
<FIELDS>
<FIELD>
<NAME>User1Transmission.DocumentID</NAME>
<VALUE>100</VALUE>
</FIELD>
<FIELD>
<NAME>User2Transmission.DocumentID</NAME>
<VALUE>200</VALUE>
</FIELD>
<FIELD>
<NAME>User3Transmission.DocumentID</NAME>
<VALUE>300</VALUE>
</FIELD>
</FIELDS>
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="user-number" select="2"/>
<xsl:template match="/FIELDS">
<result>
<xsl:value-of select="FIELD[NAME=concat('User', $user-number, 'Transmission.DocumentID')]/VALUE" />
</result>
</xsl:template>
</xsl:stylesheet>
结果
<?xml version="1.0" encoding="utf-8"?>
<result>200</result>