【发布时间】:2021-03-09 10:41:32
【问题描述】:
我有这个问题,我需要访问 MSXML IXMLDOMDocument2 接口中的处理指令。
是否可以执行XMLDocument.load() 并访问xml-stylesheet 指令?
如果是,怎么做才对?
我有 xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
...
我需要提取 xml-stylesheet href 值。
但是XMLDocument在XMLDocument.load()操作后似乎不包含这个处理指令。
所以我做不到:
XMLDocument.transformNode(XSLDocument);
XSLDocument 填充了 transform.xsl 内部的内容,因为我不知道 transform.xsl 的位置。
感谢您的帮助。
【问题讨论】:
-
那么您尝试过什么,您认为“但是 XMLDocument 在 XMLDocument.load() 操作之后似乎不包含此处理指令”?我认为 XMLDocument.childNodes 包含该处理指令,我不记得微软是否将 XML 声明放在 DOM 中,如果没有,XMLDocument.firstChild.data 应该给你我认为的
type="text/xsl" href="transform.xsl"值。跨度> -
如果使用 XPath 作为选择语言,
XMLDocument.selectSingleNode("processing-instruction('xml-stylesheet')").data也应该可以工作(即默认情况下在 MSXML 6 中或通过首先使用 MSXML 3XMLDocument.setProperty("SelectionLanguage", "XPath")设置它。 -
搜索时使用
XMLDocument.documentElement,没有这样的元素。 -
我不明白对
documentElement的引用,这会给你 XML 的根元素,例如对于<root><foo>...</foo></root>root元素,例如<html><body>...</body></html>html元素节点。xml-stylesheet位于根元素之前。 -
@MartinHonnen - 哦,是的,你说得对,在这工作一整天之后,我似乎很累了。谢谢,请把你的答案放在下面,这样我就可以检查它作为解决方案。
标签: xml xslt transformation delphi-2010 msxml