0
特定の属性値を持つ特定のノードがある場合は、xslt変換をスキップします。特定のプロパティを持つ特定のノードがある場合、xslt変換をスキップしてください。
サンプルXML 1:
<root>
<div class = "noEdit"/>
<name value= "ABC"/>
<address value= "ABC"/>
</root>
サンプルXML 2:
<root>
<div class = "Edit"/>
<name value= "ABC"/>
<address value= "ABC"/>
</root>
だから今、私はこれらの2つのXMLの、私はサンプル1の場合にXSLT変換を適用したいが、中には適用されませんしていますサンプル2の場合divタグのclass属性の値に基づいて条件が決定されます。私のサンプルXSLTは現在
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0">
<xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@ | node()">
<xsl:copy> <xsl:apply-template select="@*|node()"/>
</xsl:copy>
<xsl:template match="name" >
<TransformedName><xsl:value-of select="value"/></TransformedName>
</xsl:template>
<xsl:template match="address" >
<Transformedaddress><xsl:value-of select="value"/></Transformedaddress>
</xsl:template>
です。上記のXSLTはどちらの場合でも動作します。 1の解決策は、名前と住所のテンプレートマッチングの両方にDIVの前の節を付けることですが、元のXSLTのアドレスと名前のようなノードが多すぎるため、オーバーヘッドとコードの重複になります。
私は<のxsl追加する場合:テンプレートの一致= "/ルート[DIV/@クラスは、= 'noEdit']"/>私のxsltで、Sample xml 1の出力が空白になっています。すべての元のタグとその属性を含む出力を入力と同じにします。 –
"*入力と同じ出力をしたい*"これはあなたの質問から理解できないと思います。とにかく、私は自分の答えを修正しました。 –
ありがとう、私はかなりXSLTを新しくして、私は言語の流れを理解するのに苦労しています。あなたは、言語の理解を深めるために、私にいくつかのリソース(w3とチュートリアルのポイントを除いて、私はそれらを通ってきました)を提案できますか? –