我試圖在xslt中做一個簡單的「查找替換」,但無法使其生成正確的輸出。我試圖遵循其他例子,但不幸的是,我沒有用XSLT做過多的工作,也找不到能夠做我想做的事情的例子。如果XSLT啓動時用XSLT取代元素值 - 給定的前綴,但保留其餘的XML原樣
我有下面的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文檔的其餘部分被清除。我以爲我使用身份模板來保留其他所有的東西。
我拿出了條狀空間和其他格式的變化,但否則這工作完美。謝謝! –
@azeckoski,不客氣。 –