Xml 如何添加父“包装器”元素并在现有模式中验证它们
我创建了一个验证xml实例的xml模式。因为我已经研究了一段时间,所以我当时一直在注释一些xml代码,以简化我对xml模式的学习。我当前有一个具有以下结构的有效架构:Xml 如何添加父“包装器”元素并在现有模式中验证它们,xml,xsd,Xml,Xsd,我创建了一个验证xml实例的xml模式。因为我已经研究了一段时间,所以我当时一直在注释一些xml代码,以简化我对xml模式的学习。我当前有一个具有以下结构的有效架构: <xsd:element name="singer" type="singerType"/> <xsd:complexType name="singerType"> <xsd:sequence> <xsd:element name="singer_id">
<xsd:element name="singer" type="singerType"/>
<xsd:complexType name="singerType">
<xsd:sequence>
<xsd:element name="singer_id">
....
....
....
但是现在我的xml文件具有这种结构
<element1>
<element2 id="1">
<singer>
<singer_id>
我想做的是将element1和element2合并到我现有的模式中。这两个元素都是复杂类型,我尝试了几种不同的方法,但都出现了错误。有人能给我指出如何将这两个元素添加到我的模式中的正确方向吗?我不得不在这里做一些假设,因为您没有包含足够的代码示例。如果这不能回答您的问题,请编辑您的问题并添加更多详细信息 您有这样一个XML:
<?xml version="1.0" encoding="UTF-8"?>
<element1 xmlns="http://your.target.namespace/singer"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://your.target.namespace/singer schema.xsd">
<element2 id="1">
<singer>
<singer_id>123</singer_id>
</singer>
<singer>
<singer_id>456</singer_id>
</singer>
</element2>
<element2></element2>
<element2>
<singer>
<singer_id>789</singer_id>
</singer>
</element2>
</element1>
您可以使用以下模式对其进行验证:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://your.target.namespace/singer"
xmlns="http://your.target.namespace/singer"
elementFormDefault="qualified">
<xs:element name="singer" type="singerType"/>
<xs:complexType name="singerType">
<xs:sequence>
<xs:element name="singer_id" type="xs:token" />
</xs:sequence>
</xs:complexType>
<xs:element name="element1">
<xs:complexType>
<xs:sequence>
<xs:element name="element2" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element ref="singer" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="id" type="xs:token" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
当然,您可能希望以不同的方式组织它,如果您打算使用复杂类型,则按名称公开它们,或者如果您希望在其他地方使用它,则在顶层定义element2。element2中允许多少singer元素?元素1呢?里面允许有多少元素2?另外,您是否可以显示完整有效的XSD,以及一个或多个应该由它验证的XML实例?element2中可以有零个或多个Singer