嘿,即时通讯尝试打开我的XML架构为不同的命名空间,这似乎工作,但所有默认的命名空间元素现在是无效的。扩展xsd的XML与多个命名空间
预先感谢您。我试图实现与Spring(i.E .: spring-beans.2.5.xsd)中完成的相同的模式扩展机制,它们也打开bean
定义,也适用于##other
,此工作正常!
我添加了一个example of these three files,可以方便地访问一个zip存档并将其上传到一键式主机快速分享。
什么是我的错?
例如-list.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.example.org/schema/list"
xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/schema/list">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" />
<xs:complexType name="ExampleListModelType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="ExampleListGroup" />
</xs:choice>
</xs:complexType>
<xs:group name="ExampleListGroup">
<xs:choice>
<xs:element name="foo" type="xs:string" />
<xs:element name="bar" type="xs:string" />
<xs:element name="baz" type="xs:string" />
<xs:any namespace="##other" processContents="strict" />
</xs:choice>
</xs:group>
<xs:element name="action-list" type="ExampleListModelType" />
</xs:schema>
定制示例-list.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org/schema/custom" elementFormDefault="qualified"
targetNamespace="http://www.example.org/schema/custom">
<xs:element name="eek" type="xs:string" />
</xs:schema>
例如-list.xml
<?xml version="1.0" encoding="UTF-8"?>
<action-list xmlns="http://www.example.org/schema/list"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:custom="http://www.example.org/schema/custom"
xsi:schemaLocation="
http://www.example.org/schema/list example-list.xsd
http://www.example.org/schema/custom custom-example-list.xsd">
<custom:eek></custom:eek>
<bar></bar>
</action-list>
错误
Invalid content was found starting with element 'bar'. One of '{foo, bar, baz, WC[##other:"http://www.example.org/schema/list"]}' is expected
非常疯狂,非常感谢!如果你发现,为什么这是必要的,请给我发一个note =) – codevour 2010-02-22 08:05:22
当example-list.xsd中的'elementFormDefault =“unqualified”(这是默认值)时,它表示本地元素(未直接定义元素在模式下)不应该在实例XML中被限定,即他们不应该定义他们的名字空间。但是在你的exmaple-list.xml中,本地元素栏通过在其父(action-list)上定义一个默认名称空间来定义它的名称空间为“http:// www.example.org/schema/list”。 – sengs 2012-07-12 08:23:14
要测试这个,你可以在example-list.xml的bar元素中添加'xmlns =“”'。这会使该元素属于空名称空间,并且应验证XML。 – sengs 2012-07-12 08:24:02