2012-02-16 90 views
1

應用標準的XSLT複製模板,XSLT與命名空間:複製模板省略屬性

<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

JBoss AS 7 standalone.xml,導致參數丟失:

<?xml version="1.0" encoding="UTF-8"?><server xmlns="urn:jboss:domain:1.1"> 
    <extensions> 
     <extension/> 
     <extension/> 

,而不是

<?xml version="1.0" encoding="UTF-8"?><server xmlns="urn:jboss:domain:1.1"> 
    <extensions> 
     <extension module="org.jboss.as.clustering.infinispan"/> 
     <extension module="org.jboss.as.configadmin"/> 

爲什麼? 我怎樣才能讓它複製一切?

XSLT轉換由Maven XML插件完成。 整個模板:

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:ds="urn:jboss:domain:datasources:1.0" 
      xmlns="urn:jboss:domain:1.1" 
      version="1.0"> 
    <xsl:output method="xml" indent="yes"/> 

<xsl:template match="*|@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="*|@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 
+1

對不起,虛驚一場 - 還有一個改造與工藝的其它地方怎麼回事一個螺絲模板。 我幾乎失去了對全能XSLT的信心:) – 2012-02-16 01:34:44

回答

2

您的模板似乎工作正常。

我修改它和XML來表明工作:

<?xml version="1.0" encoding="UTF-8"?> 
<server xmlns="urn:jboss:domain:1.1"> 
    <extensions> 
    <extension module="org.jboss.as.clustering.infinispan"/> 
    <extension module="org.jboss.as.configadmin"/> 
    </extensions> 
</server> 

運行這個XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:ds="urn:jboss:domain:datasources:1.0" 
       xmlns:so="urn:jboss:domain:1.1" 
       version="1.0"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="*|@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="*|@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
    <xsl:template match="so:extension"> 
    <xsl:copy> 
    <xsl:attribute name="testing">just for fun!!</xsl:attribute> 
    <xsl:copy-of select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

產地:

<?xml version="1.0"?> 
<server xmlns="urn:jboss:domain:1.1"> 
    <extensions> 
    <extension testing="just for fun!!" module="org.jboss.as.clustering.infinispan"/> 
    <extension testing="just for fun!!" module="org.jboss.as.configadmin"/> 
    </extensions> 
</server> 

這裏與輸出運行原裝XSL:

<?xml version="1.0"?> 
<server xmlns="urn:jboss:domain:1.1"> 
    <extensions> 
    <extension module="org.jboss.as.clustering.infinispan"/> 
    <extension module="org.jboss.as.configadmin"/> 
    </extensions> 
</server> 

我下載的是完整的JBoss standalone.xml,跑到你的XSL,和這裏的輸入和輸出XML的DIFF:

so zacharyyoung$ xsltproc so.xsl so.xml > output.xml 
so zacharyyoung$ diff so.xml output.xml 
1,2c1 
< <?xml version='1.0' encoding='UTF-8'?> 
< 
--- 
> <?xml version="1.0"?> 
+0

感謝您的驗證,它讓我檢查了整個過程,並...查看我對該問題的評論。謝謝! – 2012-02-16 01:35:53