我在我的XML中使用xsl:stylesheet
处理指令。无论如何选择使用XPath这个PI?如果是这样如何?什么是XPath表达式来选择处理指令?
回答
使用processing-instruction()
节点测试。
通常,可以使用processing-instruction()
节点测试来选择处理指令。
更具体地说,可以包括想要的PI节点的名称(目标)作为参数。
使用:
/processing-instruction('xml-stylesheet')
此选择具有名称xsl-stylesheet
被在全局级别定义的任何处理指令(是所述顶部元件的兄弟姐妹)。
请注意,xsl:stylesheet
是PI的无效PI目标。冒号':'
用于从本地名称分隔名称空间前缀 - 但是处理指令目标不能属于名称空间。由于每W3c XPath Specification:
“处理指令有一个扩展名:本地部分是处理指令的目标;空间URI为空”。
此外,根据W3C文档:"Associating Style Sheets with XML documents 1.0”,则PI的一个样式表将XML文档相关联必须是目标:"xml-stylesheet"
- 不"xsl:stylesheet"
"xsl-stylesheet"
或
下面是一个完整的例子:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select="/processing-instruction('xml-stylesheet')"/>
</xsl:template>
</xsl:stylesheet>
当该变换被针对下面的XML文档施加:
<?xml-stylesheet type="text/xsl" href="test"?>
<Books>
<Book name="MyBook" />
</Books>
XPath表达式求值和所选择的PI节点输出:
<?xml-stylesheet type="text/xsl" href="test"?>
我看到你仍然在使用你的旧技巧......删除并重新发布一个放弃反对票的答案直接导致了滥用:人们如何决定评价你的答案是他们的决定,而不是你的答案。请不要再这样做。 – Shog9 2012-02-26 06:38:14
'/ processing-instruction('xml-stylesheet')'选择名为'xsl-stylesheet'的东西吗?这将是神奇的!请注意'xml' vs'xsl'。 – 2013-05-28 09:53:36
@MicheldeRuiter,是的,它的确如此。这是在这里正式定义的(底部第三段):http://www.w3.org/TR/xpath/#node-tests – 2013-05-28 14:01:52
甲处理指令帽两个部分目标和数据的语法:
<?target data?>
如果您使用:
<xsl:value-of select="/processing-instruction('xml-stylesheet')" />
它只会返回数据的一部分,在Dimitre Novatchev的例子,它返回:
type="text/xsl" href="test"
所以处理指令的字符串值是数据的一部分。选择表达式<xsl:value-of
进行评估,并将结果对象转换为字符串,如隐式调用string()
函数。
- 1. xpath表达式来选择属性值
- 2. XPath表达式来选择儿童
- 3. XPath表达式来选择链接
- 4. 什么是XPATH表达式来选择TreeView的所有检查节点?
- 5. 什么是XPath表达式来选择基于其前缀的属性?
- 6. 选择指令的角度表达式
- 7. 这是什么XPATH表达式
- 8. 使用正则表达式来过滤预处理指令?
- 9. XPath表达式来选择链接文本与子div的
- 10. Angular-UI Typeahead指令的正确表达式是什么?
- 11. XSLT/XPath的:从什么是选择
- 12. 什么是Xpath表达式来选择使用Firefox WebDriver时具有文本的所有节点?
- 13. XPath:可以选择什么?
- 14. 为什么选择AngularJS指令?
- 15. 如何使用正则表达式来剥离预处理指令
- 16. 有什么是S表达式什么是XPATH是用于XML的?
- 17. PHP:什么是更好的方式来处理表单数据?
- 18. XPath来CSS选择
- 19. 什么是xpath正则表达式来提取这个元标记?
- 20. 这个XPATH表达式的作用是什么?
- 21. XPath表达式?
- 22. XPath表达式
- 23. XPath表达式
- 24. 使用预处理器指令来定义命令行选项
- 25. Lambda表达式来选择XML
- 26. 写LINQ表达式来选择项目
- 27. 正则表达式来选择#OnlinePopup和_
- 28. Linq表达式来选择字段
- 29. 正则表达式来选择子
- 30. 正则表达式中的一个表达式来选择子
Kirill,这个答案太笼统 - 你没有提供一个特定的XPath表达式来精确选择想要的PI。 – 2012-02-24 14:59:27