-2

ここに問題があります。複数のタグが含まれているxmlファイルがあり、誰がタグを作成するかによって、任意の順序になる可能性があります。タグを元の順序に保ちながら、スタイルを設定するためにxlsファイルを作成する必要があります。xmlは次のとおりです。

<content>
<h>this is a header</h>
<p>this is a paragraph</p>
<link>www.google.com</link>
<h> another header!</h>
</content>
4

1 に答える 1

0

XSLT は、そうするように指示されない限り、要素を独自に並べ替えることはありません。要素を一致させ、それらを他の要素に置き換えると、見つけた順序で処理されます。

単純に要素を HTML 要素に置き換えたい場合は、必要な HTML 要素を出力する各要素に対応するテンプレートを作成するだけです。たとえば、h要素をh1要素に置き換えるには、次のようにします。

<xsl:template match="h">
   <h1>
      <xsl:apply-templates select="@*|node()"/>
   </h1>
</xsl:template>

h1要素は、元のドキュメントでh要素があった位置に出力されます。ここに完全な XSLT があります

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html" indent="yes"/>

   <xsl:template match="content">
      <body>
         <xsl:apply-templates select="@*|node()"/>
      </body>
   </xsl:template>

   <xsl:template match="h">
      <h1>
         <xsl:apply-templates select="@*|node()"/>
      </h1>
   </xsl:template>

   <xsl:template match="link">
      <a href="{text()}">
         <xsl:apply-templates select="@*|node()"/>
      </a>
   </xsl:template>

   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

サンプル ドキュメントに適用すると、次のように出力されます。

<body>
   <h1>this is a header</h1>
   <p>this is a paragraph</p>
   <a href="www.google.com">www.google.com</a>
   <h1> another header!</h1>
</body>
于 2012-08-02T12:08:02.867 に答える