如何在XSLT输出上调用getElementById()?

时间:2013-05-16 00:25:55

标签: php getelementbyid

使用PHP,我使用XSLTProcessor::transformToDoc()将XML文档转换为另一个XML文档(类型为DOMDocument。)

我想在此getElementById()上调用DOMDocument,但它不知道要查看哪个属性。我似乎必须以某种方式告诉它“id”属性是包含每个元素ID的属性。

然而,我看不出怎么做。我没有DTD所以我无法调用DOMDocument::validate(),我无法设置DOMDocument::validateOnParse,因为DOMDocument实例在转换完成之前不存在,到那时为时已晚,我无法调用DOMElement::setIdAttribute(),因为我必须手动浏览每个元素才能执行此操作。

有没有办法可以轻松地在PHP的XSLT转换输出上调用getElementById()

1 个答案:

答案 0 :(得分:0)

一种可行的解决方案(不确定效率)是使用XPath代替:

$xp = new DOMXPath($xml);
$nodes = $xp->evaluate('//*[@id="blah"]');
$node = $nodes->item(0);