ノードの名前を取得し、変数を値に置き換えて編集する方法を見つけようとしています。
例:
<mbean code="abc.def.ghi" name="com.ijk.lmn:name=@value1@">
<attribute name="storename">value</attribute>
<depends optional-attribute-name="bookname">value2</depends>
<attribute name="Type">ebook</attribute>
<attribute name="Properties">
bookName=value3
booktype=value4
</mbean>
期待される出力:
<mbean code="abc.def.ghi" name="com.ijk.lmn:name=newvalue">
<attribute name="storename">value</attribute>
<depends optional-attribute-name="bookname">value2</depends>
<attribute name="Type">ebook</attribute>
<attribute name="Properties">
bookName=value3
booktype=value4
</mbean>
私はこのxslコードでテストしましたが、私が望んでいたものをキャプチャしていない方法がいくつかあります:
<xsl:template match="mbean[@name]">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:analyze-string select="." regex="([\w.]+)=@(.*?)@">
<xsl:matching-substring>
Value1: <xsl:value-of select="regex-group(1)"/>
Value2: <xsl:value-of select="regex-group(2)"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:copy>
</xsl:template>
要素は何も変更していませんが、ノードの名前を変更しています。