给定输入XML文件:
<acctInfo>
<wfInfo>
<aaa>1</aaa>
<bbb>1</bbb>
<ccc>1</ccc>
<ddd>1</ddd>
<eee>1</eee>
</wfInfo>
<acctInfo>
查找文件:
<fields>
<field>
<name>aaa</name>
<Updatekey>aaakey</Updatekey>
</field>
<field>
<name>bbb</name>
<Updatekey>bbbkey</Updatekey>
</field>
<field>
<name>ccc</name>
<Updatekey>ccckey</Updatekey>
</field>
</fields>
我想使用XSLT / XPATH来计算输入xml文件中查找表中具有相应键的所有节点。在上面的例子中,count应该给3.谢谢。
答案 0 :(得分:1)
您可以使用文档命令在XSLT中引用另一个xml文档。
<xsl:value-of
select="count(//wfInfo/*[document('Lookup.xml')//field/name = local-name()])" />
即。匹配 wfInfo 下的所有元素,其中lookup.xml中有一个与该元素同名的字段名称。
因此,给出以下XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:value-of
select="count(//wfInfo/*[document('Lookup.xml')//field/name = local-name()])" />
</xsl:template>
</xsl:stylesheet>
输出 3
答案 1 :(得分:0)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select=
"count(/*/*/*
[name()
=
document('file:///c:/temp/delete/lookup.xml')/*/*/name]
)"/>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档(更正为格式良好):
<acctInfo>
<wfInfo>
<aaa>1</aaa>
<bbb>1</bbb>
<ccc>1</ccc>
<ddd>1</ddd>
<eee>1</eee>
</wfInfo>
</acctInfo>
生成想要的正确结果:
3
答案 2 :(得分:-1)
尝试这种方法:
┌─────────┐
│Meta XSLT│
┌──────────┐└────┬────┘┌──────────┐
│Lookup XML├─────┴────>┤Inner XSLT│
└──────────┘┌─────────┐└────┬─────┘┌──────────┐
│Input XML├─────┴─────>┤ Output │
└─────────┘ └──────────┘
使用以Meta XSLT
为输入的Lookup XML
,生成Intermedia XSLT
来处理输出