<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:send xmlns:tns="http://www.test.com/Service/v3">
<NS2:Message release="006" version="010" xmlns:NS2="http://www.ncpdp.org/schema/SCRIPT">
<NS2:Body>
<NS2:New>
<NS2:Pharmacy>
<NS2:Identification>
<NS2:ID>
<NS2:IDValue>01017</NS2:IDValue>
<NS2:IDQualifier>94</NS2:IDQualifier>
<NS2:IDRegion>SCA</NS2:IDRegion>
<NS2:IDState>CA</NS2:IDState>
</NS2:ID>
</NS2:Identification>
</NS2:Pharmacy>
</NS2:New>
</NS2:Body>
</NS2:Message>
</tns:send>
</soapenv:Body>
</soapenv:Envelope>
我有這個模式版本爲3.0的xml http://www.test.com/Service/v3。我需要將其降級到版本1 http://www.test.com/Service/v1。要做到這一點,我使用XSL來轉換它。命名空間的XSLT轉換
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:booga="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://www.test.com/Service/v3"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:src="http://www.ncpdp.org/schema/SCRIPT"
>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tns:*">
<!-- Output a new element in the new namespace -->
<xsl:element name="tns:{local-name()}" namespace="http://www.test.com/Service/v1">
<!-- Copy all child attributes and nodes
<xsl:apply-templates select="node()|@*"/> -->
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
,但我得到這樣
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:send xmlns:tns="http://www.test.com/Service/v3">
<NS2:Message release="006" version="010" xmlns:NS2="http://www.ncpdp.org/schema/SCRIPT" xmlns:tns="http://www.test.com/Service/v3">
<NS2:Body>
<NS2:New>
<NS2:Pharmacy>
<NS2:Identification>
<NS2:ID>
<NS2:IDValue>01017</NS2:IDValue>
<NS2:IDQualifier>94</NS2:IDQualifier>
<NS2:IDRegion>SCA</NS2:IDRegion>
<NS2:IDState>CA</NS2:IDState>
</NS2:ID>
</NS2:Identification>
</NS2:Pharmacy>
</NS2:New>
</NS2:Body>
</NS2:Message>
</tns:send>
</soapenv:Body>
</soapenv:Envelope>
在我的輸出XML結果我得到這個
<NS2:Message release="006" version="010" xmlns:NS2="http://www.ncpdp.org/schema/SCRIPT" xmlns:tns="http://eps.pdxinc.com/webservice/Rxservice/v3">
爲什麼這個加到NS2:Message
?
xmlns:tns="http://eps.pdxinc.com/webservice/Rxservice/v3
它不存在輸入XML。
有一些我失蹤了。如果有人能指出這個問題,我會很感激。
我所尋找的輸出以創建如下:
<?xml version="1.0"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:send xmlns:tns="http://www.test.com/Service/v1">
<NS2:Message release="006" version="010" xmlns:NS2="http://www.ncpdp.org/schema/SCRIPT" >
<NS2:Body>
<NS2:New>
<NS2:Pharmacy>
<NS2:Identification>
<NS2:ID>
<NS2:IDValue>01017</NS2:IDValue>
<NS2:IDQualifier>94</NS2:IDQualifier>
<NS2:IDRegion>SCA</NS2:IDRegion>
<NS2:IDState>CA</NS2:IDState>
</NS2:ID>
</NS2:Identification>
</NS2:Pharmacy>
</NS2:New>
</NS2:Body>
</NS2:Message>
</tns:send>
</soapenv:Body>
</soapenv:Envelope>
我申請在NS2:Message
是增加一個額外的命名空間xmlns:tns="http://www.test.com/Service/v3
的XSL文件。
Orginally的標籤是:
<NS2:Message release="006" version="010" xmlns:NS2="http://www.ncpdp.org/schema/SCRIPT">
後我申請XSL將其改爲:
<NS2:Message release="006" version="010" xmlns:NS2="http://www.ncpdp.org/schema/SCRIPT" xmlns:tns="http://www.test.com/Service/v3>
我不知道什麼地方獲取添加這個命名空間。
我只想要將xmlns:tns="http://www.test.com/Service/v3
轉換爲xmlns:tns="http://www.test.com/Service/v3
的tns:send
標記。
客戶,你忘了展現確切想要的結果。請編輯問題並指定這些缺失和重要的信息。 –
另外,提供的XML不是格式良好的XML文檔。請改正。 –
我編輯了這個問題,並添加了我期待的輸出xml,XML現在已經很好地形成了。抱歉,添麻煩了。 – Guest