【问题标题】:where to update rules, constrains and elements of xml schema在哪里更新 xml 模式的规则、约束和元素
【发布时间】:2014-06-19 17:14:15
【问题描述】:

我正在尝试构建自己的 xml 架构。

比如我有这个元素

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

我可以在哪里应用这个架构?我的意思是我想要一些东西(工具或网站),我可以将模式作为输入,然后生成 xml 文件给我。另外,我想将一些 xml 文件验证为特定架构。

我已经阅读了这里的提问规则,我的问题似乎是题外话,但这不是因为我在问一个关于编程问题的问题,我试图解决它,但我不能,因为 xml 架构在 w3c 中我不是很清楚。

感谢您花时间和精力帮助我。

问候,

【问题讨论】:

    标签: xml xsd xsd-validation


    【解决方案1】:

    您可以使用this XML generator 等在线工具生成带有架构的示例XML。拥有实例后,您还可以使用在线工具对其进行验证。 This XML validator 允许您保存验证对并稍后参考。

    在尝试生成或验证任何内容之前,您必须正确构建架构,并使用 &lt;schema&gt; 根元素和命名空间声明:

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
        <xs:element name="employee">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="firstname" type="xs:string"/>
                    <xs:element name="lastname" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    

    如果您使用上面提到的生成服务,您将获得以下示例实例:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Document created with online XML Editor http://xmlgrid.net 2014/06/19 14:51:15  -->
    <employee>
        <firstname>test string</firstname>
        <lastname>test string</lastname>
    </employee>
    

    您还可以以声明方式将实例绑定到架构,以便对其进行验证,而无需单独指定架构。如果您的架构没有目标命名空间,您将使用 XML 架构实例属性 noNamespaceSchemaLocation(需要在 XSD 实例命名空间中进行限定):

    <employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:noNamespaceSchemaLocation="schema-uri.xsd">
        <firstname>test string</firstname>
        <lastname>test string</lastname>
    </employee>
    

    如果它有一个目标命名空间(不是上面的架构的情况),您将使用schemaLocation,它需要一对(或者更多,如果您有来自多个架构的元素在一个document) 的空格分隔的字符串,映射命名空间及其位置。

    <employee xmlns="employee-namespace"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="employee-namespace schema-uri.xsd">
        <firstname>test string</firstname>
        <lastname>test string</lastname>
    </employee>
    

    为了验证这一点,您的架构需要在根元素中具有 targetNamespace 属性。通常你也会将目标命名空间声明为默认命名空间,所以如果需要,你可以引用其他本地类型:

     <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                targetNamespace="employee-namespace"
                xmlns="employee-namespace"
                elementFormDefault="qualified">
        <xs:element name="employee">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="firstname" type="xs:string"/>
                    <xs:element name="lastname" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多