質問する
49 次
3 に答える
0
'nu'値を保持するパラメータを作成することをお勧めします。
<xsl:param name="lang" select="'nu'" />
次に、そのように言語固有のテキストを抽出することができます
<xsl:template match="span[@class='languageSpecificText']">
<xsl:value-of select="span[@class=$lang]" />
</xsl:template>
これが完全なXSLTです
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:param name="lang" select="'nu'" />
<xsl:template match="a">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="span[@class='languageSpecificText']">
<xsl:value-of select="span[@class=$lang]" />
</xsl:template>
<xsl:template match="a/text()">
<xsl:value-of select="normalize-space()" />
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
サンプルXMLに適用すると、次のように出力されます。
<div>Swap(T)</div>
パラメータを「vb」に変更すると、次のようになります。
<div>Swap(Of T)</div>
于 2012-08-22T09:42:30.837 に答える
0
次のようにしてみてください:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="div">
<xsl:element name="div">
<xsl:value-of select="normalize-space(a/text()[1])"/>
<xsl:value-of select="(.//span/span[@class='nu'])[1]/text()"/>
<xsl:value-of select="normalize-space(a/text()[2])"/>
<xsl:value-of select="(.//span/span[@class='nu'])[2]/text()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
<div>
が正しく閉じられていると想定しました:)。
于 2012-08-22T09:27:13.277 に答える
0
必要な結果を生成する最短の方法の 1 つは、次のとおりです。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="a">
<div><xsl:apply-templates/></div>
</xsl:template>
<xsl:template match="a/text() | span[@class='nu']/text()">
<xsl:value-of select="normalize-space()"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
説明:
すべてのテキスト ノードは次の場合に無視されます。
<xsl:template match="text()"/>
-- これにより、出力から効果的に「削除」されます。a
とのテキスト ノードの子のみがspan[@class='nu']
異なる方法で処理されます (出力でテキスト ノードを生成するために使用されます -- テンプレート マッチング: によって)a/text() | span[@class='nu']/text()
。のテキスト ノードの子の不要な空白は
a
、標準の XPath 関数を使用して削除されます。normalize-space()
于 2012-08-22T12:44:56.097 に答える