我正在尝试编写DTD,我想定义一个元素BOOKTYPE,可以是ONE,TWO或THREE。有没有办法可以确保只能在元素中输入其中一个值?
注意: 1.我知道如何在属性中执行此操作,但不知道如何使用元素完成此操作。 2.我想要一种在DTD中进行此操作的方法,而不是使用编程语言。
答案 0 :(得分:1)
不在DTD,抱歉。您只需指定what elements may appear as children, and whether text content (#PCDATA) can appear or not即可。你对文本内容的含义没有说法。
您必须将数据移动到属性,或者使用比老旧笨重的DTD更强大的模式语言。
答案 1 :(得分:0)
有没有办法可以确保这一点 可以输入其中一个值 在元素里面?
是的,包含XML Enumeration的XML架构定义(XSD)。以下是货币的示例:
<xsd:simpleType name = "iso3currency">
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "AUD"/><!-- Australian Dollar -->
<xsd:enumeration value = "BRL"/><!-- Brazilian Real -->
<xsd:enumeration value = "CAD"/><!-- Canadian Dollar -->
<xsd:enumeration value = "CNY"/><!-- Chinese Yen -->
<xsd:enumeration value = "EUR"/><!-- Euro -->
<xsd:enumeration value = "GBP"/><!-- British Pound -->
<xsd:enumeration value = "INR"/><!-- Indian Rupee -->
<xsd:enumeration value = "JPY"/><!-- Japanese Yen -->
<xsd:enumeration value = "RUR"/><!-- Russian Rouble -->
<xsd:enumeration value = "USD"/><!-- US Dollar -->
<xsd:length value = "3"/>
</xsd:restriction>
这会将元素的值限制为列出的枚举值之一,长度为3.
要使用它,您必须通过validator传递XML和XSD。如何在.NET中执行此操作的示例如下:
如何:根据Visual C#.NET中的XML架构验证XML片段 http://support.microsoft.com/kb/318504