我试图在XML Schema中为以下示例实例声明一个xml:lang
属性:
<?xml version="1.0" encoding="UTF-8"?>
<database xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml-lang-1.xsd">
<entry>
<language xml:lang="en">
<other_data/>
</language>
<language xml:lang="nl">
<other_data/>
</language>
</entry>
</database>
目前,我有两个解决方案:
使用:
<xs:attributeGroup name="XMLNamespaceAttrs">
<xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/>
</xs:attributeGroup>
在同一架构中,或
使用xs:import
并导入:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/XML/1998/namespace">
<xs:import schemaLocation="xml-lang-2.xsd"/>
<xs:attribute name="lang" type="xs:NCName"/>
</xs:schema>
来自外部文件。
我的问题:
xml:lang
的数据类型是否隐含为xs:languag
e(或其他),或者需要这样做/可以是
明确宣布?非常感谢您的帮助。
答案 0 :(得分:0)
我认为以最有效的方式在XML命名空间中声明属性是第一个选项:首先,在将XML的命名空间作为目标命名空间的不同模式中声明属性,然后将import
此模式转换为您的主架构和ref
您要使用的属性。这样,您可以使用use
属性以及XML的架构属性。