0

すみません。私はこの2つのxmlファイルを持っています。ProvlaLingua1.xml

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

そしてこの2番目の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>

そうしないと、どの言語でもあまりにも多くの行を書く必要があるからです。助けてくれてありがとう

4

2 に答える 2

3
  document('ProvaLingua2.xml')/LINGUA/*[name()=$language]/TAG1" /><br />
于 2012-05-02T11:34:38.757 に答える
2

編集前に投稿にあった問題を特定することはできませんが、サンプルに基づいて、キーを使用せずにXSLT 1.0または2.0を使用する方法と、キーを使用しないXSLT1.0および2.0を使用する方法の3つの方法を示します。キーと、キーを使用する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>
于 2012-05-02T11:37:05.950 に答える