开发者

Can I use XPath to get the content of a processing instruction in XML?

I have a very simple XML snippet that is stored in a file that needs to be updated.

Unfortunately it is a processing instruction that I need to have updated.

Can I use XPath to get the content of the processing instruction, or at least part of it?

For example:

<Include>
   <?define Version="2.0"?>
</Include>  

I need to get the value of "Ver开发者_开发百科sion".


This XPath expression:

substring-before(
   substring-after(
      /Include/processing-instruction('define'),
      'Version="'
   ),
   '"'
)

Evaluate to the string: '2.0'


I don't think you can get '2.0'. You can get 'Version="2.0"' in a single value, then manually extract the '2.0' out of it. It is part of xml spec. If you wish to get 2.0, make sure that you use <define Version='2.0/> (use element instead of processing instruction).


Quoting from here,

The "attributes" in processing instructions aren't actually attributes -- they just look like them. Noramally people refer to these kinds of "attributes" as "pseudo-attributes" to emphasise that fact. As far as the XPath data model is concerned, the only information you can get about a processing instruction is its target, its value and its location in the node tree.

So you can get to the node itself with

/Include/processing-instruction('define')

but all that gets you is a node with a Value of Version="2.0" (as a string), which you must then parse yourself.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜