在使用xslt样式表中的xpath过滤xml文档时,我需要一些帮助。xml文档如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<constants>
<entry key="KundenAuftragsnummer">
<msg lang="EN">Customer Order Number</msg>
<msg lang="DE">Kunden-Auftragsnummer</msg>
</entry>
<entry key="UnserZeichen">
<msg lang="EN">our reference</msg>
<msg lang="DE">Unser Zeichen</msg>
</entry>
........
这是我的xslt .........
<xsl:variable
name="lang"
select="Invoice/@language"></xsl:variable>
<xsl:variable
name="langText"
select="document('Ausgangsrechnung Texte.xml')//*[msg[@lang=$lang]]">
</xsl:variable>
我想要$ langText中的文档来保留整个结构,但只保留具有匹配语言的msg元素。可以使用单个xpath表达式来实现吗?请 帮助。
西吉
可以使用单个xpath表达式来实现吗?
否,因为XPath表达式会选择节点(如果存在的话),而您想构造新的入口元素,该元素具有原始入口元素具有的子代的子集。
如果要将此过滤后的树发送到输出,请使用适当的模板以错误的语言去除味精元素。如果您只是建立一个查找表供以后使用,请使用当前使用的表,该表将设置langText
为具有适当语言的味精的条目元素集,然后在查找时进行过滤
<xsl:value-of select="$langText[@key='...']/msg[@lang=$lang]"/>
或者,将变量设置为容纳msg
元素而不是条目,并在其父项上使用谓词查找它们
<xsl:variable
name="lang"
select="Invoice/@language"></xsl:variable>
<xsl:variable
name="langText"
select="document('Ausgangsrechnung Texte.xml')/constants/entry/msg[@lang=$lang]">
</xsl:variable>
<xsl:value-of select="$langText[../@key='...']"/>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句