我是XSLT的新手
我输入xml为
markSubString
输出XML是
<?xml version="1.0"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<urn:LookupRecords xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:a="urn:RedIron.RetailRepository.Core" xmlns:urn="urn:RedIron.RetailRepository.Services.SearchService">
<urn:query>
<a:Headers>
<a:SearchHeader>
<a:SearchHeader>
<a:SearchHeader>
</a:Headers>
<a:Params>
<arr:KeyValueOfguidArrayOfQueryParametertmL6yAXy>
</a:Params>
</urn:query>
</urn:LookupRecords>
</soapenv:Body>
</soapenv:Envelope>
现在我正在尝试使用XSLT(例如
)更改转换<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetRecordResponse xmlns="urn:RedIron.RetailRepository.Services.SearchService">
<GetRecordResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="urn:RedIron.RetailRepository.Core">
<a:Exception i:nil="true"/>
<a:ResponseHeaders>
<a:SearchResults>
<a:StatusCode>Success</a:StatusCode>
<a:StatusCodeReason i:nil="true"/>
</GetRecordResult>
</GetRecordResponse>
</s:Body>
</s:Envelope>
但收到错误“格式不正确:元素”的前缀“s”:信封“未绑定。”
你能帮忙吗
答案 0 :(得分:0)
如前所述,名称空间声明不是属性,不能使用xsl:attribute
指令创建。为了编写XSLT片段中显示的文字结果元素,您需要更改以下代码:
<s:Envelope>
<xsl:attribute name="xmlns:s"><xsl:value-of select="xmlns:soapenv"/></xsl:attribute>
<s:Body>
</s:Body>
</s:Envelope>
为:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
</s:Body>
</s:Envelope>
请注意,声明是包含它的节点的所有后代的范围内(因此不需要为s:Body
元素重复它)。通常,您会在顶级xsl:stylesheet
标记中包含所有命名空间声明。