我是XSLT的新手。我需要像这样创建一个XML。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetRecordResponse xmlns="urn:RedIron.RetailRepository.Services.SearchService">
<GetRecordResult xmlns:a="urn:RedIron.RetailRepository.Core" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
我能够将xml生成到这个lavel。但由于使用了多个lavel命名空间,我感到困惑。
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetRecordResponse xmlns="urn:RedIron.RetailRepository.Services.SearchService"/>
</s:Body>
</s:Envelope>
我正在使用此XSLT进行相同的
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
version="2.0">
<xsl:output indent="yes"/>
<xsl:template match = "/" >
<s:Envelope >
<s:Body>
<xsl:element name = "GetRecordResponse" namespace = "urn:RedIron.RetailRepository.Services.SearchService" >
</xsl:element>
</s:Body>
</s:Envelope>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
如果要添加这些命名空间节点,可以使用xsl:namespace
。这仅适用于支持XSLT2.0的处理器。
<xsl:element name="GetRecordResponse" namespace="urn:RedIron.RetailRepository.Services.SearchService">
<xsl:element name="GetRecordResult" namespace="urn:RedIron.RetailRepository.Services.SearchService">
<xsl:namespace name="a" select="'urn:RedIron.RetailRepository.Core'" />
<xsl:namespace name="i" select="'http://www.w3.org/2001/XMLSchema-instance'" />
</xsl:element>
</xsl:element>
或者,您可以直接写出元素名称和命名空间声明
<GetRecordResponse xmlns="urn:RedIron.RetailRepository.Services.SearchService" >
<GetRecordResult xmlns:a="urn:RedIron.RetailRepository.Core" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" />
</GetRecordResponse>
请注意,例如,如果将GetRecordResult
的创建移动到其他模板,则可能需要在其上指定默认命名空间,因为它将不再继承GetRecordResponse
的默认名称。
<GetRecordResult xmlns="urn:RedIron.RetailRepository.Services.SearchService"
xmlns:a="urn:RedIron.RetailRepository.Core"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" />