1

XML:

<Book>
   <Title>blahblah</Title>
   <Title>
    <subtitle>bcdf</subtitle><subtitle>bcdf</subtitle>asdfg
   </Title>
   <Title>
    <subtitle>bcdf</subtitle>jhuk<subtitle>bcdf</subtitle>refsdw
  </Title>
  <Title>
   <subtitle>bcdf</subtitle>fdgfjhdc<subtitle>bcdf</subtitle>
  </Title>
 </Book>

出力結果は次のようになります。

 <Title>blahblah</Title>
 <Title>asdfg</Title>
 <Title>jhukrefsdw</Title>
 <Title>fdgfjhdc</Title>
4

4 に答える 4

0

インデックスで特定の要素を選択できます

/Book/Title[1]/text() 
于 2013-11-10T14:16:19.143 に答える
0

ここでの最も単純なアプローチは、単純にsubtitle要素を完全に取り除くことです。次のスタイルシート:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <!-- identity template - copies everything as-is unless overridden -->
  <xsl:template match="@*|node()">
    <xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
  </xsl:template>

  <!-- ignore (i.e. delete) subtitle elements -->
  <xsl:template match="subtitle" />
</xsl:stylesheet>

の出力を生成します

<Book>
   <Title>blahblah</Title>
   <Title>
    asdfg
   </Title>
   <Title>
    jhukrefsdw
  </Title>
  <Title>
   fdgfjhdc
  </Title>
 </Book>

空白を修正したい場合は、3 番目のテンプレートを追加するだけで十分な場合があります。

<xsl:template match="text()">
  <xsl:value-of select="normalize-space()" />
</xsl:template>

出力をインデントするようにスタイルシートに指示します

<xsl:output indent="yes" />

次に生成する

<Book>
  <Title>blahblah</Title>
  <Title>asdfg</Title>
  <Title>jhukrefsdw</Title>
  <Title>fdgfjhdc</Title>
</Book>
于 2013-11-10T18:17:51.917 に答える