>我在 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" 的文档和所有发票元素。
<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
使用
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>
你 XML 无效。我看不到发票和报价的正确结束标签。