![]() |
1
2
您没有提供有关将要创建/分析此XML的内容的上下文,但假设您可以控制此XML,则可以为此定义自己的约定,例如:
然后解析器将在其中查找ID为“foo”的元素以检索TableSchema信息。 |
![]() |
2
1
为什么不包括定义?在一个XML模式中定义它,然后 include 无论您想在哪里在另一个XML模式中使用它,如下所示:
问题的第二个方面是:XML文档能够指定 表表 它是。 这里有一个与OO编程类似的例子:(1)定义一个超类,(2)将foo和bar定义为它的子类。然后,(3)将字段类型定义为它们的公共超类;现在(4)。运行时对象可以是任何一个子类。这有道理吗?不管怎样,我认为这就是你的想法。 完成这个类比:在XML中,类是 复合型 ;子类是 延伸 一个领域就是 要素 它的阶级就是 类型 属性-运行时对象的类是 XSI:类型 一个 要素 在一个 XML文档 . 关键是最后一部分, XSI:类型 . (1)。定义公共超级类-XML complexType:
(2)。定义子类-以上complexType的扩展名:
(3)。定义一个字段作为超类-一个元素作为从以下扩展的complexType:
(4)。现在,XML可以指定一个元素是特定的complexType 在XML本身中 :
注意 类型 是特殊的,并在给定的命名空间中定义。事实上,有几个名称空间问题可能令人沮丧,但关键是它 是 可以做你想做的。 有关更完整的示例,请参见 XML Schema Primer . |
![]() |
3
0
您可能需要使用XSL样式表转换来执行您想要的操作。最后,它将生成一个完整且已解析的XML。 |
![]() |
4
0
(我可能还不理解这个问题,但是…)假设您想从字面上使用TableSchema中的文本值,那么这就取决于您的处理代码。XML只是数据的表示。所以你可以自己编格式,比如说:
然后,您的工具读取整个文档,并记住foo和bar(在表中)的定义。然后,它开始处理报告:当它使用report1时,它看到上面对foo的引用,它在哈希表中查找foo并使用它。这就是你的意思吗? 如果是这样的话,使用id和idref标签就有了更多的支持,所以您可以:
然后,(我认为)解析工具将为您填充并查找表。您需要在schema/dtd中将myidref和myid定义为idref和id类型,这样解析器就知道要对它们进行特殊处理。比如(只显示myidref):
|
![]() |
hengyue li · 如何获得不同类型的模块以进行代码重用? 8 年前 |
![]() |
Bartel · QML依赖性/可重用性(静态代码)检查器 8 年前 |
![]() |
Tarciana · 在Alloy中使用谓词 10 年前 |