dtd - 如何声明多个元素共有的属性?

标签 dtd xml

我有多个元素要赋予这些属性:

<!ATTLIST [all these elements]
    width   CDATA   "0"
    height  CDATA   "0"
    margin  CDATA   "0 0 0 0"
    padding CDATA   "0 0 0 0"
    rotation CDATA  "0"
    halign  (left|center|right|full)    "center"
    valign  (top|middle|bottom|full)    "middle"
    >

这在 DTD 中是否可能以某种方式实现,还是我必须手动完成?

(此外,虽然我在这里,但我认为以这种方式声明 marginpadding 属性不是一个好主意。有人知道吗更好的方法?)

最佳答案

每个元素都需要有自己的attribute declaration (ATTLIST)。但是,您可以使用 parameter entity重用其中的大部分内容。

例子...

<!ENTITY % attrs 
    'width   CDATA   "0"
     height  CDATA   "0"
     margin  CDATA   "0 0 0 0"
     padding CDATA   "0 0 0 0"
     rotation CDATA  "0"
     halign  (left|center|right|full)    "center"
     valign  (top|middle|bottom|full)    "middle"'>

<!ELEMENT elem1 (#PCDATA)>
<!ATTLIST elem1 %attrs;>

<!ELEMENT elem2 (#PCDATA)>
<!ATTLIST elem2 %attrs;>

这是另一个混​​合了参数实体引用和仅出现在单个元素上的属性的示例。

<!ELEMENT elem1 (#PCDATA)>
<!ATTLIST elem1 
    attr1 CDATA #IMPLIED
    %attrs;              >

<!ELEMENT elem2 (#PCDATA)>
<!ATTLIST elem2 
    attr2 CDATA #IMPLIED
    %attrs;              >

关于dtd - 如何声明多个元素共有的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308365/

相关文章:

java - 使用本地 dtd 进行 xml 验证使用 java 传递本地 xml 和 dtd 文件

HTML/XHTML 默认 DTD 标记?

带参数的 XML 实体?

xml - 我可以使用哪些资源来验证 DTD?

css - 使用 CSS 或 XPath 排除另一个元素中包含的元素

javascript - 错误 : SyntaxError: DOM Exception 12 on Tag Creation Using jQuery

c# - 带有 cdata 的转义 xml 也具有转义数据值和标签

java - 在运行期间使用 JAXB 编写 X3D 格式的 XML

javascript - 在 XSL 中包含带有大括号 {} 的内联 JavaScript

java - 登录成功后如何在另一个 Activity (配置文件 Activity )中加载用户的数据库?我正在尝试创建一个个人资料页面