我明天正在编写测试,必须学习一些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>
答案 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>