ネストされたxmlファイルをテキストに変換しようとして問題が発生しました。私が本当に必要としている出力は、特定のノードとその子(この場合は「secondBit」および「thirdBit」タイプのノード「div」)のテキストコンテンツです。残念ながら、いくつかの内部タグ(span class = "bold")を削除し、終了タグをスペースに置き換える必要があります。入力ファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<myxml>
<content>
<p class="heading">Omit this please</p>
<div type="firstBit">
<div class="extended"><span class="italic">this as well</span>
</div>
<meta name="factor"/>
</div>
<div type="secondBit">
<p>
<meta name="first" id="9"/>Some text in here.</p>
</div>
<div type="thirdBit">
<div class="internal" >
<div class="intro">
<p class="varied">And then a <span class="bold">Button</span>can be pushed <span class="bold">without</span>any trouble</p>
</div>
</div>
</div>
</content>
</myxml>
これが私がこれまでに持っているxslです:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output method="text" encoding="UTF-8" indent="no"
omit-xml-declaration="yes" />
<xsl:template match="node()">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="div[@type= ('secondBit', 'thirdBit')]">
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
しかし、これは私に出力を与えます:
ここにいくつかのテキストがあります。その後、ボタンを問題なく押すことができます
一方、出力が必要です(スペースに注意してください):
ここにいくつかのテキストがあります。その後、ボタンを問題なく押すことができます
おそらく次のxslスニペットを導入する必要があることはわかっていますが、方法がわかりません。
<xsl:template match="span[@class='bold']">
<xsl:value-of select="normalize-space(.)"/><xsl:text> </xsl:text>
</xsl:template>
ここがこれらの質問をする場所ではない場合、私は人々の時間を無駄にしたことをお詫びします。
そうでなければ、すべての助けに感謝します。