xsltで単純な「find-replace」を実行しようとしていますが、正しい出力を生成するのに問題があります。他の例に従おうとしましたが、残念ながらXSLTをあまり使用しておらず、やりたいことを実行する例を見つけることができませんでした。
私は次のXMLを持っています:
<metadata>
<Permissions>site:abcdefg-123456-id1::{azeckoski}h,S,r</Permissions>
<Permissions>site:hjklqwe-098765-id2::{person2}h,S,r</Permissions>
<Permissions>playlist:5678::{azeckoski}h,S,r</Permissions>
<Permissions>playlist:7890::{azeckoski}H,s,r</Permissions>
<Permissions>playlist:1234::{person1}H,s,R</Permissions>
</metadata>
そして、次のXSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:package="info:srw/extension/13/package-v1.0" >
<xsl:output omit-xml-declaration="yes" indent="no"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="metadata[starts-with(Permissions,'site:abcdefg-123456-id1::')]">
<xsl:copy>
<xsl:text>site:abcdefg-123456-id1::{azeckoski}H,S,R</xsl:text>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
最終的に次のXMLになります。
<metadata>
<Permissions>site:abcdefg-123456-id1::{azeckoski}H,S,R</Permissions>
<Permissions>site:hjklqwe-098765-id2::{person2}h,S,r</Permissions>
<Permissions>playlist:5678::{azeckoski}h,S,r</Permissions>
<Permissions>playlist:7890::{azeckoski}H,s,r</Permissions>
<Permissions>playlist:1234::{person1}H,s,R</Permissions>
</metadata>
しかし、私は代わりにこれで終わります:
<metadata>site:abcdefg-123456-id1::{azeckoski}H,S,R</metadata>
XMLドキュメントの残りの部分が消去されている理由がわかりません。IDテンプレートを使用して、他のすべてをそのまま保持していると思いました。