我可以在命名空间中注册xsd,然后验证xml忽略命名空间

时间:2014-08-26 10:27:52

标签: xml namespaces xsd

我们注册的XSD(不包含名称空间)是从包含命名空间的相同XSD(通过删除命名空间)获得的 由于在WSDL文件中使用了XSD,因此需要具有名称空间的XSD。 这导致了XSD的重复,即我们需要维护2组XSD(一组有一组,一条没有命名空间)。

Oracle是否允许我们使用命令(register schema命令)注册具有命名空间的XSD,然后通过忽略命名空间来验证实例XML?

没有命名空间的XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Element Declarations -->
            <xs:element name="S_NO" type="S_NOType">
                            <xs:annotation>
                                        <xs:documentation>S_Number</xs:documentation>
                            </xs:annotation>
            </xs:element>

带名称空间的XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"     xmlns="http://*****_request.*****.ws.*****.com"
     targetNamespace="http://*****_request.*****.ws.*****.com">
<!-- Element Declarations -->
            <xs:element name="S_NO" type="S_NOType">
                            <xs:annotation>
                                            <xs:documentation>S_Number</xs:documentation>
                            </xs:annotation>
            </xs:element>

1 个答案:

答案 0 :(得分:3)

  1. 通常这种演习是团队不欣赏的标志 理解命名空间。我的第一个建议就是你 从更广泛的角度考虑拥抱名称空间 贯穿整个系统。只有正确使用名称空间 在你的情况下,我真的不可能继续选择#2或#3 ......
  2. 假设你的工具是 基于Xerces-J,可以设置为namespace feature false将禁用名称空间的处理: 的 http://xml.org/sax/features/namespaces 即可。你可能会发现这一点 没有按照你希望的方式工作 然而,验证。
  3. 你可以在你的构建中加入一个简单的 XSLT转换等 XSD的无名称空间版本是自动派生的 来自master,基于命名空间的XSD。
相关问题