2017-06-07 7 views
0

私はすべてのノードから特定の要素を選択する必要があるXMLを持っており、選択した要素に対してノードのサブセットから値を選択する必要があります。実際のXMLの構造はthis-選択されたノードのサブセットから要素を選択するためのxslt

<Host> 
    <Node> 
    <element1>type0</element1> 
    <element2>Fruits0</element2> 
    </Node> 
    <Node> 
    <element1>type1</element1> 
    <element2>Fruits1</element2> 
    </Node> 
    <Node> 
     <element1>type2</element1> 
     <element2> 
     <Namelist> 
      <Names> 
      <element2>fruit2</element2> 
      <Node> 
       <element1>type3</element1> 
       <element2>Fruits3</element2> 
      </Node> 
      </Names> 
     </Namelist> 
     </element2> 
    </Node> 
    <Node> 
    <element1>type4</element1> 
    <element2>Fruits4</element2> 
    </Node> 
    <Node> 
    <element1>type5</element1> 
    <element2>Fruits5</element2> 
    </Node> 
</Host> 

のような出力がない

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<html> 
<body> 
<table border="1"> 
    <xsl:for-each select="Host"> 
    <xsl:for-each select="//Node"> 
    <xsl:sort select="element1" /> 
    <tr> 
     <td><xsl:value-of select="element1" /></td> 
     <td><xsl:value-of select="element2" /></td> 
    </tr> 
    </xsl:for-each> 
</xsl:for-each> 
</table> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

follows-として書かれたXSLTがある
<html> 
<body> 
<table border="1"> 
    <tr> 
    <td>type0</td> 
    <td>Fruits0</td> 
    </tr> 
    <tr> 
    <td>type1</td> 
    <td>Fruits1</td> 
    </tr> 
    <tr> 
    <td>type2</td> 
    <td>Fruits2</td> 
    </tr> 
    <tr> 
    <td>type3</td> 
    <td>Fruits3</td> 
    </tr> 
    <tr> 
    <td>type4</td> 
    <td>Fruits4</td> 
    </tr> 
    <tr> 
    <td>type5</td> 
    <td>Fruits5</td> 
    </tr> 
</table> 
</body> 
</html> 

follows-として今、期待される出力XMLがあります期待通り -

<html> 
<body> 
<table border="1"> 
    <tr> 
    <td>type0</td> 
    <td>Fruits0</td> 
    </tr> 
    <tr> 
    <td>type1</td> 
    <td>Fruits1</td> 
    </tr> 
    <tr> 
    <td>type2</td> 
    <td>Fruits2Fruits3</td> 
    </tr> 
    <tr> 
    <td>type3</td> 
    <td>Fruits3</td> 
    </tr> 
    <tr> 
    <td>type4</td> 
    <td>Fruits4</td> 
    </tr> 
    <tr> 
    <td>type5</td> 
    <td>Fruits5</td> 
    </tr> 
</table> 
</body> 
</html> 

子ノードのデータを含まないデータ<element2>Fruits2Fruits3</element2>を持つ要素の出力をフォーマットしたい。どんな助けも高く評価されます。ありがとうございました。

+1

あなたのXMLの例を修正し、それが整形してください。 –

+0

こんにちは@ michael.hor257k私はXMLの例と出力を変更しました。私が必要とするのは、 Fruits2に子ノードのデータを含めない場合の要素だけです。 –

+1

'/ host/Node [3]'を正しく閉じる必要があります。また、いくつかの要素は 'element'で始まり、いくつかは' Element'(大文字の 'E')で始まります。この矛盾しているのは意図的なものなのでしょうか? –

答えて

0

は変更してみてください:

<td><xsl:value-of select="element2"/></td> 

へ:

<td><xsl:value-of select="(.//element2[text()])[1]"/></td> 
関連する問題