我们可以在 DtD 上使用 Xpath
Can we use Xpath on DtD
我想找到特定的 XML_ELEMENT_DECL 类型的节点,而不是线性地遍历树,有没有办法使用 Xpath 来做到这一点?
使用 XML 示例,如何找到“UID”的 XML_ELEMENT_DECL 版本而不是 XML_ELEMENT_NODE 版本?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TSS [
<!ELEMENT TSS (name, UID, Sequences*)>
<!ATTLIST TSS doc CDATA #IMPLIED>
<!ATTLIST TSS help CDATA "">
<!ATTLIST TSS image CDATA #FIXED "C:\Users\dholstein\Documents\XML\icons\settings.png">
<!ELEMENT name (#PCDATA)>
<!ELEMENT UID (#PCDATA)>
<!ELEMENT Sequences (Sequence*)>
<!ELEMENT Sequence (#PCDATA|Steps)*>
<!ELEMENT Steps (Step*, dan1, dan2, dan3)>
<!ELEMENT Step (#PCDATA)>
]>
<TSS doc="da man" image="C:\Users\dholstein\Documents\XML\icons\settings.png">
<name><![CDATA[X-32 T&I]]></name>
<UID> <![CDATA[123456]]></UID>
<Sequences>
<Sequence><![CDATA[DMWR Test]]>
<Steps>
<Step><![CDATA[Step 1]]>
</Step>
<Step><![CDATA[Step 2]]>
</Step>
</Steps>
</Sequence>
<Sequence><![CDATA[Verification]]></Sequence>
</Sequences>
</TSS>
<!-- /TSS/Sequences/Sequence[contains(text(), 'DMWR')]/Steps/Step[contains(text(), 'Step 1')] -->
DTD 不是 parseable/searchable 的 XPath,后者是为 select 文件中的 XML 内容构建的,表示为树。只需在 DTD 部分执行 grep。
否,XPath 不能用于 DTD 的 select 部分。
XPath 在 XML 上运行,并且 DTD 未在 XML 中表示。
另一方面,XSD 是 XML,因此可以与 XPath 一起使用。
对任何新的 XML 模式开发工作使用 XSD 而不是 DTD;它们以许多有用的方式取代了 DTD,包括将它们自己表示为 XML.
我想找到特定的 XML_ELEMENT_DECL 类型的节点,而不是线性地遍历树,有没有办法使用 Xpath 来做到这一点?
使用 XML 示例,如何找到“UID”的 XML_ELEMENT_DECL 版本而不是 XML_ELEMENT_NODE 版本?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TSS [
<!ELEMENT TSS (name, UID, Sequences*)>
<!ATTLIST TSS doc CDATA #IMPLIED>
<!ATTLIST TSS help CDATA "">
<!ATTLIST TSS image CDATA #FIXED "C:\Users\dholstein\Documents\XML\icons\settings.png">
<!ELEMENT name (#PCDATA)>
<!ELEMENT UID (#PCDATA)>
<!ELEMENT Sequences (Sequence*)>
<!ELEMENT Sequence (#PCDATA|Steps)*>
<!ELEMENT Steps (Step*, dan1, dan2, dan3)>
<!ELEMENT Step (#PCDATA)>
]>
<TSS doc="da man" image="C:\Users\dholstein\Documents\XML\icons\settings.png">
<name><![CDATA[X-32 T&I]]></name>
<UID> <![CDATA[123456]]></UID>
<Sequences>
<Sequence><![CDATA[DMWR Test]]>
<Steps>
<Step><![CDATA[Step 1]]>
</Step>
<Step><![CDATA[Step 2]]>
</Step>
</Steps>
</Sequence>
<Sequence><![CDATA[Verification]]></Sequence>
</Sequences>
</TSS>
<!-- /TSS/Sequences/Sequence[contains(text(), 'DMWR')]/Steps/Step[contains(text(), 'Step 1')] -->
DTD 不是 parseable/searchable 的 XPath,后者是为 select 文件中的 XML 内容构建的,表示为树。只需在 DTD 部分执行 grep。
否,XPath 不能用于 DTD 的 select 部分。
XPath 在 XML 上运行,并且 DTD 未在 XML 中表示。
另一方面,XSD 是 XML,因此可以与 XPath 一起使用。
对任何新的 XML 模式开发工作使用 XSD 而不是 DTD;它们以许多有用的方式取代了 DTD,包括将它们自己表示为 XML.