XSD和元素存在性要求,或其他选项
在XSD级别,我可以基于文档中另一个元素的存在来定义元素需求吗 例如,我想要求在XSD和元素存在性要求,或其他选项,xsd,xml-validation,Xsd,Xml Validation,在XSD级别,我可以基于文档中另一个元素的存在来定义元素需求吗 例如,我想要求在元素同时存在时提供元素,否则名字是可选的 如果这不能在XSD级别强制执行,那么我是否应该使这两个元素都是可选的,并通过不同级别的检查来强制执行需求 欢迎选择 这不能在XSD级别强制执行 让这两个元素都成为可选的,并在应用程序体系结构的不同级别强制执行需求,这对我来说是一个不错的选择。下面是一个在DTD中实现的示例。(注意:测试实例是使用oxygenxml编辑器(使用Xerces)验证的。) DTD(test.DTD)
元素同时存在时提供元素
,否则名字是可选的
如果这不能在XSD级别强制执行,那么我是否应该使这两个元素都是可选的,并通过不同级别的检查来强制执行需求
欢迎选择 这不能在XSD级别强制执行
让这两个元素都成为可选的,并在应用程序体系结构的不同级别强制执行需求,这对我来说是一个不错的选择。下面是一个在DTD中实现的示例。(注意:测试实例是使用oxygenxml编辑器(使用Xerces)验证的。) DTD(test.DTD)
以下是一些示例XML实例(有效和无效):
有效
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT user ((firstname?|(firstname,id)),lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT id (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<firstname/>
<id/>
<lastname/>
</user>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<id/>
<lastname/>
</user>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<firstname/>
<lastname/>
</user>
无效
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT user ((firstname?|(firstname,id)),lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT id (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<firstname/>
<id/>
<lastname/>
</user>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<id/>
<lastname/>
</user>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<firstname/>
<lastname/>
</user>
有效
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT user ((firstname?|(firstname,id)),lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT id (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<firstname/>
<id/>
<lastname/>
</user>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<id/>
<lastname/>
</user>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<firstname/>
<lastname/>
</user>
我不认为这可以用XSD实现(就像pmartin说的那样),但可以用DTD实现。如果您感兴趣,请告诉我,我将发布一个示例。@DevNull:当然,请继续发布一个DTD示例,因为我的问题标题要求提供选项,此类信息对未来的访问者很有用。我用“欢迎选项”修改了问题文本,以加强标题。谢谢