<VENDOR>
<IMMAGINI_SITO>True</IMMAGINI_SITO>
<VERSIONE_SKYWALKER>1</VERSIONE_SKYWALKER>
<CDLINGUA>IT</CDLINGUA>
</VENDOR>
和第二个ProvaLingua2.xml
<LINGUA>
<EN>
<TAG1>The book is on the table</TAG1>
<TAG2>The cat is on the table</TAG2>
</EN>
<IT>
<TAG1>Il libro è sul tavolo</TAG1>
<TAG2>Finche la barca va lasciala andare</TAG2>
</IT>
</LINGUA>
所以我需要检查ProvaLingua1以获得CDLINGUA勇气,然后从ProvaLingua2中提取一个勇气。 我需要像
这样的东西<xsl:variable name="LANGUAGE" select="document('ProvaLingua1.xml')VENDOR/CDLINGUA"/>
<xsl:value-of select="document('ProvaLingua2.xml')/LINGUA/A VARIABLE HERE/TAG2" />
我需要将变量“LANGUAGE”放到提取中,我不能用它来执行:
<xsl:choose>
<xsl:when test="$language='IT'">
<xsl:value-of select="document('ProvaLingua2.xml')/LINGUA/IT/TAG1" /><br />
<xsl:value-of select="document('ProvaLingua.xml')/LINGUA/IT/TAG2" /><br />
</xsl:when>
</xsl:choose>
因为否则我需要为任何语言写太多行。 感谢您的帮助
答案 0 :(得分:3)
document('ProvaLingua2.xml')/LINGUA/*[name()=$language]/TAG1" /><br />
答案 1 :(得分:2)
我无法在编辑之前发现您在帖子中的内容存在问题,但根据您的示例,我展示了三种解决方法,一种是使用XSLT 1.0或2.0而不使用密钥,另一种是使用XSLT 1.0和2.0使用密钥和使用密钥的XSLT 2.0:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:param name="url1" select="'test2012050202.xml'"/>
<xsl:param name="url2" select="'test2012050203.xml'"/>
<xsl:variable name="doc1" select="document($url1)"/>
<xsl:variable name="doc2" select="document($url2)"/>
<xsl:key name="tag-by-lang" match="TAG2" use="local-name(..)"/>
<xsl:template match="/">
<xslt2>
<xsl:value-of select="key('tag-by-lang', $doc1/VENDOR/CDLINGUA, $doc2)"/>
</xslt2>
<xslt1>
<xsl:for-each select="$doc2">
<xsl:value-of select="key('tag-by-lang', $doc1/VENDOR/CDLINGUA)"/>
</xsl:for-each>
</xslt1>
<without-key>
<xsl:value-of select="$doc2/LINGUA/*[local-name() = $doc1/VENDOR/CDLINGUA]/TAG2"/>
</without-key>
</xsl:template>
</xsl:stylesheet>