0

後続の処理のために、いくつかの XHTML フラグメントを特定の XML 形式に変換したいと考えています。XSLTでこれを実現したいと思います。

ここで、ネストされた XML 構造の平坦化に関するいくつかの質問と回答を見てきましたが、複数の要素本文テキスト ノードが含まれていることは明らかではありませんでした。

入力 XHTML の例は次のとおりです (この例は最も単純なケースです。理論的には、さまざまなクラス属性を持つスパンを任意のレベルでネストできます)。

<div>
    <span class="one">
        Leading One Text
        <span class="two">Two Text</span>
        Trailing One Text
    </span>
</div>

この出力 XML を生成しようとしています。

<document>
    <text class="one">Leading One Text </text>
    <text class="two">Two Text</text>
    <text class="one"> Trailing One Text</text>
</document>

これは XSLT で実現できますか? もしそうなら、どのように実現できますか?

4

1 に答える 1

1
<xsl:template match="div">
  <document>
    <xsl:apply-templates select=".//text()[normalize-space() != '']" />
  </document>
</xsl:template>

<xsl:template match="div//text()">
  <text class="{../@class}">
    <xsl:value-of select="normalize-space()" />
  </text>
</xsl:template>
于 2013-09-04T07:50:42.927 に答える