我试图在 xslt 中做一个简单的“查找替换”,但无法让它产生正确的输出。我尝试学习其他示例,但不幸的是,我对 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 文档的其余部分。我以为我正在使用身份模板来保持其他所有内容不变。