0

次のようなxmlコードがあります。

<body>Text Here1.
</body>
<body><Title>Title</Title>Text Here2.
</body>
<body>Text Here3.
</body>

そして、XSLT で次のコードを使用しています。

<xsl:when test="@name='body'">
<p> 
<xsl:value-of select='normalize-space(node())'/>
</p>
</xsl:when>

2番目のノードでそのサブ要素を無視する、またはノード内で特別な書式を適用する(そのテキストを太字にしたいとしましょう)ための最良のメカニズムは何ですか?

ありがとう

4

1 に答える 1

1

XSLT を使用して階層構造を処理する場合、apply-templates を使用するのが一般的です。これにより、XML 入力を再帰的にトラバースできます。以下の例では、要素内のテキストを要素でカプセル化bodyし、要素内の要素内のparagraphテキストをカプセル化します。他のすべての要素は無視されます。Titlebold

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" version="4.0" encoding="iso-8859-1" indent="yes"/>
  <xsl:template match="/">
    <xsl:apply-templates />
  </xsl:template>
  <xsl:template match="body">
    <p>
      <xsl:apply-templates />
    </p>
  </xsl:template>
  <xsl:template match="Title">
    <b>
      <xsl:apply-templates />
    </b>
  </xsl:template>
  <xsl:template match="text()">
    <xsl:value-of select='normalize-space(.)'/>
  </xsl:template>
</xsl:stylesheet>
于 2012-05-07T21:49:16.773 に答える