XML W3C测试用例017a.xml的处理指令解析疑问
问题解答
先看目标XML内容:
<!DOCTYPE doc [<!ELEMENT doc (#PCDATA)>]><doc><?pi some data ? > <??></doc>
根据XML 1.0规范中处理指令(PI)的定义:PI必须以<?开头,以?>作为无空格的结束标记,中间包含PI目标和可选数据,数据部分不能包含?>序列。
回到这段XML的解析逻辑:
- 第一个
<?启动PI,目标为pi,后续的? >是带空格的?和>,不符合PI的结束标记要求,因此解析器会继续将后续内容(包括空格、<?)纳入PI的数据部分,直到遇到片段末尾真正的?>。 - 不存在第二个独立的PI,因为中间的
<?是第一个PI数据的一部分,并未触发新PI的解析(新PI需要前一个PI正常结束)。
所以你的假设是正确的,解析后得到一个处理指令,其数据为some data ? > <?。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

