我有這樣的XML代碼:XSLT改變命名空間
<soapenv:Envelope xmlns:soapenv="something2" xmlns:oas="something1" xmlns:bill="something">
<soapenv:Header>
<wsse:Security xmlns:wsse="something_else">
<wsse:UsernameToken>
<wsse:Username>SYSUSER</wsse:Username>
<wsse:Password Type="PasswordText">sysuser00</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<GetBillList xmlns="old_uri" xmlns:xsi="else" xsi:schemaLocation="old_schema">
<Case>
<CaseID>699677</CaseID>
<BillGroup casref="123">
<BillGroupID>1</BillGroupID>
</BillGroup>
</Case>
<StartDate>2014-06-12</StartDate>
</GetBillList>
</soapenv:Body>
</soapenv:Envelope>
我想改變old_uri
& old_schema
成new_uri
& new_schema
分別與屬性轉換爲BillGroup
節點的元件沿。使用
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:bill="something">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="bill:BillGroup">
<xsl:element name="{local-name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
目標XML:
<soapenv:Envelope xmlns:soapenv="something2" xmlns:oas="something1" xmlns:bill="something">
<soapenv:Header>
<wsse:Security xmlns:wsse="something_else">
<wsse:UsernameToken>
<wsse:Username>SYSUSER</wsse:Username>
<wsse:Password Type="PasswordText">sysuser00</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<GetBillList xmlns="new_uri" xmlns:xsi="else" xsi:schemaLocation="new_schema">
<Case>
<CaseID>699677</CaseID>
<BillGroup>
<casref>123</casref>
<BillGroupID>1</BillGroupID>
</BillGroup>
</Case>
<StartDate>2014-06-12</StartDate>
</GetBillList>
</soapenv:Body>
</soapenv:Envelope>
將不勝感激任何幫助。
那不是XSLT。 –
看起來您不小心將您的源XML粘貼了兩次,而不是粘貼XSLT嘗試。你能更新你的問題嗎? –
我很抱歉。現在編輯代碼。當我在xmlns:bill中傳遞原始URL時,caseref被轉換爲元素。只是想改變命名空間。請幫忙。 –