属性値の変更と要素XSLの部分文字列の置換を達成したいと考えています。XSL:文字列を置換して属性値を変更する方法
XML
<...>
<communication type="telephone">123 456 789 </communication>
<communication type="telephone">789 (EXT)</communication>
<communication type="telephone">123 456 789 </communication>
</...>
は
<...>
<communication type="telephone">123 456 789 </communication>
<communication type="ext">789</communication>
<communication type="telephone">123 456 789 </communication>
</...>
XSL(2.0)
<xsl:template match="communication[@type='telephone'][contains(text(),'(EXT)')]">
<xsl:copy>
<xsl:value-of select="replace(., '(EXT)', '')"/>
<xsl:attribute name="extension">true</xsl:attribute>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
Saxxonは、属性ノードは、レコード生成することはできません「 を述べなければなりません包含要素の子の後に編集しました "
私は属性タイプの値を変更することはできませんでしたので、私は新しい属性を作成しました。しかし、この回避策でも、私は両方の要件(属性を追加し、部分文字列を削除する)をどのようにして動作させるか考えていません。
これを解決するアイデアは高く評価されています。
あなたのタイトルは「*変化属性値*」と言うと、あなたの出力は、 'type'がの値を変更することを示してい「電話」から「内線」への属性。しかし、あなたのコードは新しい 'extension'属性を追加しています。どちらが正しい? –
申し訳ありません。私は同じ値を持つ別の属性 "拡張"を追加するつもりだった。 – user1491184