【问题标题】:How can i modify xml-stylesheet attribute value in java我如何在java中修改xml-stylesheet属性值
【发布时间】:2014-02-12 00:09:55
【问题描述】:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet href="Sample.xsl" type="text/xsl"?>
<MyDoc>.....</MyDoc>

我想将属性 href 的值修改为“MyDoc.xsl”。我尝试过使用 XPath,但它什么也没返回:

//xml-stylesheet[contains(text(), 'Sample.xsl')]/@href";

同样使用 Document 只给出从 MyDoc 开始的元素

NodeList list = taggedC32Doc.getElementsByTagName("*");

有什么办法可以做到吗?

【问题讨论】:

    标签: java xml xslt xpath


    【解决方案1】:

    您要更改的行是处理指令,而不是元素,因此您将其作为元素查找的任何尝试都不会奏效。试试

    /processing-instruction(xml-stylesheet)
    

    然后您可以获取该节点的数据,即href="Sample.xsl" type="text/xsl"。执行适当的字符串操作以查找和更改该字符串中的 href 伪属性——抱歉,大多数 XML API 不提供任何帮助,因为就 XML 而言,PI 的数据是未格式化的字符串,即使它的结构通常类似于属性——并将新数据设置回 ProcessingInstruction 节点。

    【讨论】:

    • 在 XPath 1.0 中也可以使用 processing-instruction() 节点测试。
    • ... 是的。我检查了 REC,因为我不确定(我已经离开 XSLT 一段时间了),不知何故错过了它。谢谢你让我诚实。
    • (正在重新检查......它在那里,但没有我想要的那样有据可查。尚未检查是否有提交的勘误表建议修复此问题。)
    • XPath 1.0 的文档通常不如某些人希望的那么好。没有人会解决这个问题。
    • 是的,我应该检查一下你的书(免费的未经请求的插件)......我真的希望有人有时间/精力/决心为其他 W3C 规范做等效的带注释的 XML Rec,甚至将那个更新到 XML 1.1。那好吧。题外话,向所有人道歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    相关资源
    最近更新 更多