2016-11-21 12 views
1
<main> 

    <p>p1</p> 
    <p>p2</p> 
    <q> 
     <z>z1</z> 
     <a>a1</a> 
     <b> 
      <c>c1</c> 
     </b> 
    </q> 

</main> 

xsltを一般的に使用してこのXML形式を解析すると、どのノードが親ノードであるかを知ることができます。具体的には要素名を使用する必要はありませんか?XML形式に動的にxsltを使用してノードが親ノードであるかどうかを調べる方法は?

次のように私は出力をしたい:C1

Z1 A1

のみ子ノードを持つ要素が、動的に

+3

'//ノード()ノードは、()]'少なくとも子ノードを持つすべてのノードを選択します。 –

+1

"Find out"はあいまいな説明です。この発見であなたは何をしたいのですか?あなたの期待される出力を教えてください。 –

+0

@ michael.hor257k今質問を編集しました – divya

答えて

0

次のように私は出力をしたい:Z1 A1 C1

唯一の要素子ノードは動的ですが、動的には

XML文書の先頭要素ではない要素である要素の文字列値が必要です。

一つの方法は、このXPath 2.0の表現使用することで、希望の文字列のシーケンスを生成するには、次のXSLT-2.0ベースの検証

/*//*/*/text()[normalize-space()] 

を:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

    <xsl:template match="/"> 
    <xsl:sequence select="/*//*/*/text()[normalize-space()]"/> 
    </xsl:template> 
</xsl:stylesheet> 

この変換が提供されたXML文書に適用されている場合

<main> 
    <p>p1</p> 
    <p>p2</p> 
    <q> 
     <z>z1</z> 
     <a>a1</a> 
     <b> 
      <c>c1</c> 
     </b> 
    </q> 
</main> 

所望の結果が製造される:

z1a1c1 
関連する問題