给定XSD的正确XML表单

时间:2013-09-18 22:59:11

标签: xml xsd

我明天正在编写测试,必须学习一些XML。我有一个XML-Schema,必须编写一个合适的XML文件。

给定的架构:

<schema> 
<element name="meta" type="metaType"/> 
<complexType name="metaType"> 
  <sequence> 
    <element name="title" type="string" minOccurs="1" maxOccurs="1"/> 
    <element name="authors" type="authorsType"/> 
    <element name="description" type="languageEntryType"/> 
    <element name="keywords" type="languageEntryType"/> 
  </sequence> 
</complexType> 
<complexType name="authorsType"> 
  <sequence> 
    <element name="name" type="string" minOccurs="1" maxOccurs="unbounded"/> 
  </sequence> 
</complexType> 
<complexType name="languageEntryType"> 
  <sequence> 
    <element name="entry" type="string" minOccurs="1" maxOccurs="unbounded"> 
      <complexType> 
        <attribute name="language"/> 
      </complexType> 
    </element> 
  </sequence> 
</complexType> 
</schema> 

我的解决方案如下:

<meta>
  <title>Sonne</title>
  <authors>Rammstein</authors>
  <description>Second Track on the Album "Mutter"</description>
  <keywords>hard rock</keywords>
  <keywords>metal</keywords>
</meta>

这是对的吗?什么是归因,我必须要介意吗? 谢谢你的帮助!

//编辑:我做了一些研究,现在我的猜测是:

<meta>
  <title>Sonne</title>
  <authors>Rammstein</authors>
  <description>Second Track on the Album "Mutter"</description>
  <keywords language="english">hard rock</keywords>
  <keywords language="english">metal</keywords>
</meta>

1 个答案:

答案 0 :(得分:0)

检查XML文档是否符合给定模式的最佳方法是使用XML编辑器或工具对该模式进行验证。 This is a free online tool you can use for just such an exercise

快速检查您的架构,第一个问题是xml-schema无效,因此没有文档可以对其进行验证。我添加了名称空间,但这仍然是不完整的,您需要先纠正它,然后才能确定文档是否对它有效。

我能够帮助将其修复到此处,但架构仍然存在错误。没有大量更正,任何文档都不能符合此模式。

  <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>  
    <xs:element name="meta" type="metaType"/> 
    <xs:complexType name="metaType"> 
      <xs:sequence> 
        <xs:element name="title" type="xs:string" minOccurs="1" maxOccurs="1"/> 
        <xs:element name="authors" type="authorsType"/> 
        <xs:element name="description" type="languageEntryType"/> 
        <xs:element name="keywords" type="languageEntryType"/> 
      </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="authorsType"> 
      <xs:sequence> 
        <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="unbounded"/> 
      </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="languageEntryType"> 
      <xs:sequence> 
        <xs:element name="entry" minOccurs="1" maxOccurs="unbounded"> 
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="language" type="xs:string"/>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element> 
      </xs:sequence> 
    </xs:complexType> 
  </xs:schema>