2014-03-24 44 views
0

我是XSLT新手,我需要幫助爲TBX文件創建一個XSLT。需要幫助爲TBX文件設置XSLT

這裏是TBX代碼示例:

<termEntry id="eid-1"> 
    <descripGrp> 
    <descrip type="Creator">ejablonski</descrip> 
    </descripGrp> 
    <descripGrp> 
    <descrip type="xDate_CreateTime">2014-01-21T20:47:59Z</descrip> 
    </descripGrp> 
    <langSet xml:lang="nl-nl"> 
    <tig> 
     <term id="tid-1-nl-nl-1">bureau</term> 
     <descripGrp> 
     <descrip type="CaseSense">Near</descrip> 
     </descripGrp> 
     <descripGrp> 
     <descrip type="xBool_Forbidden">False</descrip> 
     </descripGrp> 
     <descripGrp> 
     <descrip type="PartialTreshold">Half</descrip> 
     </descripGrp> 
    </tig> 
    </langSet> 
    <langSet xml:lang="en-us"> 
    <tig> 
     <term id="tid-1-en-us-3">agencies</term> 
     <descripGrp> 
     <descrip type="CaseSense">Near</descrip> 
     </descripGrp> 
     <descripGrp> 
     <descrip type="xBool_Forbidden">False</descrip> 
     </descripGrp> 
     <descripGrp> 
     <descrip type="PartialTreshold">Half</descrip> 
     </descripGrp> 
</tig> 
    </langSet> 
</termEntry> 

所有我需要顯示,在其相應的英語或荷蘭語列如下:

Dutch  English 
bureau  agencies 
more Dutch more English 

TBX文件是一個詞彙表格式。在上面的例子中,元素和屬性除了langset中的xml:lang屬性外都是一樣的。其中一個顯然是荷蘭語術語,下一個是英文等值。

這裏是我到目前爲止已經試過:

<?xml version="1.0"?> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
     <xsl:output method="html"/> 
     <xsl:template match="/"> 
     <html> 
      <head> 
      <title>Translation</title> 
      </head> 
      <body> 
      <p> 
       <xsl:for-each select="/text/body/termEntry/langSet/tig"> <br /> 
       <xsl:value-of select="langSet =nl-nl/term" disable-output-escaping="yes"/> 
       </xsl:for-each> 
       <xsl:for-each select="/text/body/termEntry/langSet/tig"> <br /> 
       <xsl:value-of select="term" disable-output-escaping="yes"/> 
       </xsl:for-each> 

      </p> 
      </body> 
     </html> 
     </xsl:template> 
    </xsl:stylesheet> 

感謝,使用如下因素作爲輸入XML 海梅

+0

歡迎來到Stack Overflow。如果你展示了你所嘗試過的東西,那麼你很可能會對問題做出很好的迴應,這種形式允許其他人重現問題(如果你不知道從哪裏開始,我知道這很困難)。不顯示你的工作會給人留下你沒有做過的印象,只希望別人爲你做你的工作。在[SO幫助文件](http://stackoverflow.com/help/how-to-ask)以及Eric Raymond和Rick Moen的文章[如何以智能的方式提問]中提供有效問題的建議很好( http://catb.org/~esr/faqs/smart-questions.html)。 –

+0

** 1。**請顯示完整的XML;我不知道「更多的荷蘭人」和「更多的英語」來自哪裏。你顯示'/ text/body/termEntry'的路徑 - 但我沒有看到那些高級元素。 ** 2。**您的輸出看起來像一個表格,但不會嘗試在XSLT中生成表格。 –

回答

0

<body> 
    <termEntry id="eid-1"> 
     <descripGrp> 
      <descrip type="Creator">ejablonski</descrip> 
     </descripGrp> 
     <descripGrp> 
      <descrip type="xDate_CreateTime">2014-01-21T20:47:59Z</descrip> 
     </descripGrp> 
     <langSet xml:lang="nl-nl"> 
      <tig> 
       <term id="tid-1-nl-nl-1">bureau</term> 
       <descripGrp> 
        <descrip type="CaseSense">Near</descrip> 
       </descripGrp> 
       <descripGrp> 
        <descrip type="xBool_Forbidden">False</descrip> 
       </descripGrp> 
       <descripGrp> 
        <descrip type="PartialTreshold">Half</descrip> 
       </descripGrp> 
      </tig> 
     </langSet> 
     <langSet xml:lang="en-us"> 
      <tig> 
       <term id="tid-1-en-us-3">agencies</term> 
       <descripGrp> 
        <descrip type="CaseSense">Near</descrip> 
       </descripGrp> 
       <descripGrp> 
        <descrip type="xBool_Forbidden">False</descrip> 
       </descripGrp> 
       <descripGrp> 
        <descrip type="PartialTreshold">Half</descrip> 
       </descripGrp> 
      </tig> 
     </langSet> 
    </termEntry> 
</body> 

應用以下樣式表

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="html"/> 
    <xsl:template match="/"> 
     <html> 
      <head> 
       <title>Translation</title> 
      </head> 
      <body> 
       <table> 
        <thead> 
         <tr> 
          <td>Dutch</td> 
          <td>English</td> 
         </tr> 
        </thead> 
        <tbody> 
         <xsl:for-each select="body/termEntry"> 
          <tr> 
           <td><xsl:value-of select="descendant::tig[1]/term"/></td> 
           <td><xsl:value-of select="descendant::tig[2]/term"/></td> 
          </tr> 
         </xsl:for-each> 
        </tbody> 
       </table> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

產生

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

     <title>Translation</title> 
    </head> 
    <body> 
     <table> 
     <thead> 
      <tr> 
       <td>Dutch</td> 
       <td>English</td> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>bureau</td> 
       <td>agencies</td> 
      </tr> 
     </tbody> 
     </table> 
    </body> 
</html> 

下面是更多的代碼:

  <termEntry id="eid-4"> 
      <descripGrp> 
       <descrip type="Creator">ejablonski</descrip> 
      </descripGrp> 
      <descripGrp> 
       <descrip type="xDate_CreateTime">2014-01-21T20:50:15Z</descrip> 
      </descripGrp> 
      <langSet xml:lang="nl-nl"> 
       <tig> 
        <term id="tid-4-nl-nl-1">hoedanigheid</term> 
        <descripGrp> 
         <descrip type="CaseSense">Near</descrip> 
        </descripGrp> 
        <descripGrp> 
         <descrip type="xBool_Forbidden">False</descrip> 
        </descripGrp> 
        <descripGrp> 
         <descrip type="PartialTreshold">Half</descrip> 
        </descripGrp> 
       </tig> 
      </langSet> 
      <langSet xml:lang="en-us"> 
       <tig> 
        <term id="tid-4-en-us-3">capacity</term> 
        <descripGrp> 
         <descrip type="CaseSense">Near</descrip> 
        </descripGrp> 
        <descripGrp> 
         <descrip type="xBool_Forbidden">False</descrip> 
        </descripGrp> 
        <descripGrp> 
         <descrip type="PartialTreshold">Half</descrip> 
        </descripGrp> 
       </tig> 
      </langSet> 
     </termEntry> 
     <termEntry id="eid-5"> 
      <descripGrp> 
       <descrip type="Creator">ejablonski</descrip> 
      </descripGrp> 
      <descripGrp> 
       <descrip type="xDate_CreateTime">2014-01-21T20:50:52Z</descrip> 
      </descripGrp> 
      <langSet xml:lang="nl-nl"> 
       <tig> 
        <term id="tid-5-nl-nl-1">ontwikkelaar</term> 
        <descripGrp> 
         <descrip type="CaseSense">Near</descrip> 
        </descripGrp> 
        <descripGrp> 
         <descrip type="xBool_Forbidden">False</descrip> 
        </descripGrp> 
        <descripGrp> 
         <descrip type="PartialTreshold">Half</descrip> 
        </descripGrp> 
       </tig> 
      </langSet> 
      <langSet xml:lang="en-us"> 
       <tig> 
        <term id="tid-5-en-us-3">developer</term> 
        <descripGrp> 
         <descrip type="CaseSense">Near</descrip> 
        </descripGrp> 
        <descripGrp> 
         <descrip type="xBool_Forbidden">False</descrip> 
        </descripGrp> 
        <descripGrp> 
         <descrip type="PartialTreshold">Half</descrip> 
        </descripGrp> 
       </tig> 
      </langSet> 
     </termEntry> 

所以,從上面的最後一個代碼我希望能得到這樣的:

荷蘭英語
hoedanigheid容量
ontwikkelaar開發人員

等等與術語表中的其他術語。另外,我看到在你的代碼中你必須指定有多少標記實例,但可能有幾個,或者在詞彙表中可能有幾千個。如果我們不需要指定有多少個,並且代碼可以只讀取該標籤的所有實例,那將是非常好的。

Jaime

+0

嗨Joel, 感謝您的代碼。但它只產生荷蘭和英文列標題。沒有一個詞出現。爲了清楚起見,我想要的是荷蘭元素下的所有術語顯示在荷蘭專欄中。而且,在英文欄目下顯示下的所有術語。 – jez251

+0

從上面的例子中,它輸出條款。你能顯示你的輸入嗎? –