我在XSL变量中加载跟随XML
<files>
<documents lang="en">
<Invoice>22345</Invoice>
<Invoice>22346</Invoice>
<Offer>22345</Offer>
<Offer>22346</Offer>
</documents>
<documents lang="de">
<Invoice>92345</Invoice>
<Invoice>92346</Invoice>
<Offer>92345</Offer>
<Offer>92346</Offer>
</documents>
</files>
现在我想使用属性lang =“de”for和所有发票元素来过滤文档。
<xsl:variable name="documents" select="document('documents.xml')/files/documents" />
<xsl:variable name="documentName" select="'Invoice'" />
<xsl:apply-templates
mode="filter"
select="$documents[@lang='de' and name() = $documentName]"/>
<xsl:template mode="filter" match="entrys[@lang] | *">
<xsl:value-of select="."/>
</xsl:template>
当然不工作应该是这样的
<xsl:apply-templates
mode="filter"
select="$documents[@lang='de' and */name() = $documentName]"/>
但这给我一个语法错误。
所以有人可以帮助我一个想法。
修改 在“过滤器”中硬编码“发票”之前。
我添加了
提前致谢。
T.S
答案 0 :(得分:1)
使用xml输入:
<?xml version="1.0" standalone="no"?>
<root>
<a>XXX</a>
</root>
与您的查找XML以及此样式表一起使用:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output omit-xml-declaration="yes"/>
<xsl:variable name="documents" select="document('documents.xml')/files/documents" />
<xsl:template match="root/a">
<xsl:for-each select="$documents[@lang='de']/Invoice">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我有这个输出
<Invoice>92345</Invoice><Invoice>92346</Invoice>
答案 1 :(得分:0)
您的XML无效..我看不到Invoice和Offer的正确结束标记。