Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在xslt文档函数中插入变量_Xml_Xslt_Variables_Document - Fatal编程技术网

Xml 如何在xslt文档函数中插入变量

Xml 如何在xslt文档函数中插入变量,xml,xslt,variables,document,Xml,Xslt,Variables,Document,好的,对不起。我有两个xml文件。 ProvlaLingua1.xml <VENDOR> <IMMAGINI_SITO>True</IMMAGINI_SITO> <VERSIONE_SKYWALKER>1</VERSIONE_SKYWALKER> <CDLINGUA>IT</CDLINGUA> </VENDOR> 真的 1. 信息技术 第二个ProvaLingua2.xm

好的,对不起。我有两个xml文件。 ProvlaLingua1.xml

<VENDOR>
    <IMMAGINI_SITO>True</IMMAGINI_SITO>
    <VERSIONE_SKYWALKER>1</VERSIONE_SKYWALKER>
    <CDLINGUA>IT</CDLINGUA>
</VENDOR>

真的
1.
信息技术
第二个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 valor,然后从ProvaLingua2中提取valor。 我需要像这样的东西

<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>



因为否则我需要为任何语言写太多行。 感谢您的帮助

文档('ProvaLingua2.xml')/LINGUA/*[name()=$language]/TAG1/>
  document('ProvaLingua2.xml')/LINGUA/*[name()=$language]/TAG1" /><br />
document('ProvaLingua2.xml')/LINGUA/*[name()=$language]/TAG1/>

我无法确定您在编辑之前的文章中存在的问题,但根据您的示例,我展示了三种解决方法,一种是使用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>

我无法确定您在编辑之前的文章中存在的问题,但根据您的示例,我展示了三种解决方法,一种是使用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>


考虑发布足够的信息,以便我们重现问题。使用
document(ProvaLingua1.xml)
的第一个示例需要是
document('ProvaLingua1.xml')
,因此很难判断剩余的代码。您当然可以像在
document('ProvaLingua2.xml')/MYFILE/*[name()=$lingua]/TAG2
中那样,在XPath表达式中使用变量,让我们帮助您找到为什么找不到您要找的节点。我们需要查看相关文档示例。这两个答案中的任何一个解决了您的问题吗?请善待他们并标记他们的回答:考虑发布足够的信息,让我们重现这个问题。使用
document(ProvaLingua1.xml)
的第一个示例需要是
document('ProvaLingua1.xml')
,因此很难判断剩余的代码。您当然可以像在
document('ProvaLingua2.xml')/MYFILE/*[name()=$lingua]/TAG2
中那样,在XPath表达式中使用变量,让我们帮助您找到为什么找不到您要找的节点。我们需要查看相关文档示例。这两个答案中的任何一个解决了您的问题吗?请友好地将其标记为已回答:。