我对XML只有理论和基础知识,一直在努力更好地理解内部和外部DTD、模式的概念。我问了自己一个问题,并为它写了一个XML脚本。我不知道如何运行它,甚至不知道我写的是否正确。很乐意听到对下面给出的问题和答案的更正和建议。此外,如果有人能告诉我如何运行它,那将是一个很大的帮助,因为我也想要更多的实用知识。Question: Create an XML schema for a catalog of cars, where each car has the following child elements: company_name, model, year, color, and engine type.
The answer I've written:
<?xml version ="1.0" encoding="UTF-8"?>
<!==cars.xsd
A simple schema for cars.xml
-->
<xsd:schema
xmlns:xsd="http:///www.w3.org/2001/XMLSchema"
targetNamespace="https://cs.uccs.edu/carCatalog"
xmlns="https://cs.uccs.edu/carCatalog">
<xsd:element name="Cars">
<xsd:complexType>
<xsd:sequence>
<xsd: element name= "company" type="xs.string"/>
<xsd: element name= "model" type="xs.string"/>
<xsd: element name= "year" type="xs.string"/>
<xsd: element name= "color" type="xs.string"/>
<xsd: element name= "engine" type="xs.string"/>
</xsd:sequence>
<xsd:complexType>
</xsd:element>
<!--carcatalog.xml-->
<cars
xmlns="https://cs.uccs.edu/carCatalog"
xmlns:xsi="http:///www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation="https://cs.uccs.edu/carCatalog/cae.xsd"
<company> Volks Wagon</company>
<model> abcxyz</model>
<year> 2018</year>
<color> Blue</color>
<engine> 4 cylinders</engine>
</cars>
我写的每一篇文章都是借助课本上的例子(这也是我提出问题的地方(。请尝试用简单但详细的方式描述上面的脚本有什么问题(如果有的话(。提前谢谢!
我不会给你正确的答案,但会提供足够的提示,让你自己做。
首先,查看xml或xsd在语法上是否正确的最佳方法是使用验证器。这些可以在线或离线使用。Notepad++有一个名为xml的扩展,它将帮助您,或者您可以转到:https://freeformatter.com/xml-validator-xsd.html
如果您在xml模式(xsd(上使用验证器,您将看到它不会通过。
- 评论介于
- xsd命名空间的url无效,它的数量太多
- 你打开的每一个类型都需要关闭
- 名称空间前缀和类型定义之间没有空格
- 必须定义所有带前缀的命名空间
- 在名称空间前缀和类型之间有一个:而不是
- 通过添加elementFormDefault=";合格的";attributeFormDefault=";不合格";对于具有正确设置的模式,您可以指定如何使用目标命名空间
如果您修复了这些问题,xml模式将是有效和可用的,但我假设您希望在您的汽车列表中有多辆汽车。这可以通过设置元素Cars上出现的最小值和最大值来实现。
xml也需要一些注意。
- Xml区分大小写,因此cars和cars是不同的元素
- 所有xml元素都有一个开放的<并关闭>
- 您的模式位置必须准确地指向您在本地放置文件的位置,并且文件名必须正确无误
希望这能帮助你朝着正确的方向前进。