0

次の XML のパターンを次の HTML 出力に変換する XSLT はどれですか?

<ELEMENT1>
  <!--
  Comment for element 2
  -->
  <ELEMENT2>
    <ELEMENT3>ABC</ELEMENT3>
  </ELEMENT2>
  <!--
  Comment for element 4
  -->
  <ELEMENT4>
    <ELEMENT5>0534564117</ELEMENT5>
    <!--
        Comment for element 6
    -->   
    <ELEMENT6>123456</ELEMENT6>
  </ELEMENT4>
</ELEMENT1>

出力:

  • 要素1
    • 要素 2 のコメント
    • 要素2
      • 要素3
    • 要素 4 のコメント
    • 要素4
      • 要素5
      • 要素 6 のコメント
      • 要素6
4

2 に答える 2

1

3 つのテンプレートを含むスタイルシートが必要になります。1 つのテンプレートがドキュメント ルートに一致し、外側の HTML 構造を生成し、通常どおりすべての子ノードで繰り返されます。他のすべてを HTML の順序なしリストにラップします。

<xsl:template match="/">
  <html>
    <head><title>Demo document</title></head>
    <body>
      <ul>
        <xsl:apply-templates/>
      </ul>
    </body>
  </html>
</xsl:template>

1 つのテンプレートは、要素の型名を含むリスト項目を発行することによって要素を処理します。要素に子がある場合は、ネストされたul要素で出力をラップして、それらを繰り返します。

<xsl:template match="*">
  <li>
    <xsl:value-of select="name()"/>
    <xsl:if test="node()">
      <ul>
        <xsl:apply-templates select="node()"/>
      </ul>
    </xsl:if>
  </li>
</xsl:template>

空のul要素を発行してもかまわない場合 (ほとんどのブラウザーは特に気にしません)、xsl:ifネストされた を囲む必要はありませんul

3 番目のテンプレートは、コメントに一致し、コメントの内容をi要素にラップして、それらのリスト項目を発行します。

<xsl:template match="comment()">
  <li><i><xsl:value-of select="."/></i></li>
</xsl:template>

テキスト ノードのデフォルト テンプレートが受け入れられない場合は、テンプレートでテキスト ノードを処理することもできます。

于 2013-02-04T00:53:17.137 に答える
0

あなたが探しているのは、出力にコメントを作成する xsl:comment 命令です。

于 2013-02-04T08:57:58.123 に答える