0
我需要從某些xml中刪除名稱空間前綴,但使用XSLT保留名稱空間。XSLT刪除名稱空間前綴,但使用JDK保留名稱空間XSLTC
這正是這裏描述 - How to remove namespace prefix leaving namespace value (XSLT)?
這時候我用XML文字編輯,但我在使用XSLTC工作的應用程序測試工作正常。不幸的是,它不適用於XSLTC。任何想法如何讓它工作?
這裏是源XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ns0:eBooking xmlns:ns0="http://test.com">
<ns0:eventInfo Id="ID00000000000000000020" version="1">
<ns0:Event>
<ns0:tpAmb>1</ns0:tpAmb>
<ns0:procEmi>1</ns0:procEmi>
</ns0:Event>
</ns0:eventInfo>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#ID00000000000000000020">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>p42saeKIMnVR7/P/nzen8mTsq94=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>SzLt....==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIHdzCCBV.......==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</ns0:eBooking>
這裏是XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns0="http://test.com"
xmlns="http://test.com" >
<xsl:output indent="yes"/>
<xsl:template match="ns0:*">
<xsl:element name="{local-name()}" >
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
當使用JDK XSLTC這給:
<?xml version="1.0" encoding="UTF-8"?>
<eBooking>
<eventInfo Id="ID00000000000000000020" version="1">
<Event>
<tpAmb>1</tpAmb>
<procEmi>1</procEmi>
</Event>
</eventInfo>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" **xmlns:ns0="http://test.com"**>
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#ID00000000000000000020">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>p42saeKIMnVR7/P/nzen8mTsq94=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>SzLt....==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIHdzCCBV.......==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</eBooking>
,如果我與測試工作正常xml複製編輯器。
那麼XSLTC會發生什麼?你會得到哪個結果? –
最好添加一個源XML,一個所需的XML和其他相關信息,比如已經嘗試過的XSLT。 – user3159253
這裏是源代碼xml: – user3292737