SOAP / XML中的命名空间范围

时间:2020-03-06 14:47:01  来源:igfitidea点击:

这是有效的SOAP / XML吗?

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <CreateRoute xmlns="urn:Routs">
            <aRoute>
                <name>ToTheTop</name>
                <grade xsi:type="FrencGrade">
                    <gradeNumber>7</gradeNumber>
                    <gradeModifier>a</gradeModifier>
                </grade>
            </aRoute>
        </CreateRoute>
    </soap:Body>
</soap:Envelope>

如果是这样,则FrenchGrade属于哪个名称空间?它在urn:Routs命名空间中吗?

解决方案

对,那是正确的。通过做:

<CreateRoute xmlns="urn:Routs">

...我们正在将默认名称空间更改为urn:Routs。这意味着所有未加前缀的子元素将存在于此新名称空间中。

当然,除非:

  • 我们可以使用不同的前缀显式添加新元素
  • 我们创建一个新的子元素并更改其默认名称空间,在这种情况下,其子元素将位于该新名称空间中