2 개의 'sub_x.xml'파일이 포함 된 'main.xml'파일이 있습니다. 포함 줄은 'xpointer'를 사용하여 include xml의 특정 태그 만 가리 키거나 포함합니다. ElementTree를 사용하여 이것이 올바르게 작동하는지 확인할 때 원하는 태그뿐만 아니라 전체 'sub'xml 파일이 포함되어 있음을 보여줍니다. xpointer를 잘못 사용하고 있는지 또는 ElementTree 또는 ElementInclude가이를 지원하지 않는지 확실하지 않습니다. 다음은 파일입니다.
------ 'main.xml'--------
`<?xml version='1.0' encoding='utf-8'?>
<ModelInfo xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="sub_1.xml" xpointer="xpointer(//ModelInfo/Model)" parse="xml" />
<xi:include href="sub_2.xml" xpointer="xpointer(//ModelInfo/Model)" parse="xml" />
</ModelInfo>`
------- 'sub_1.xml'------
`<?xml version="1.0" ?>
<ModelInfo>
<Model ModelName="glow">
<Variables>
<Variable Alias="glow_val" Input="False" Output="True" />
</Variables>
</Model>
</ModelInfo>`
------- 'sub_2.xml'------
`<?xml version='1.0' encoding='utf-8'?>
<ModelInfo>
<Model ModelName="sirpwr_b_supply8v1">
<Variables>
<Variable Alias="sirpwr_a_supplyecu_Snsr8vIstat" Input="True" Output="False" />
</Variables>
</Model>
</ModelInfo>`
'main.xml'이 ElementTree에 다음과 같이 나타나기를 바랍니다.
`<?xml version='1.0' encoding='utf-8'?>
<ModelInfo xmlns:xi="http://www.w3.org/2001/XInclude">
<Model ModelName="glow">
<Variables>
<Variable Alias="glow_val" Input="False" Output="True" />
</Variables>
</Model>
<Model ModelName="sirpwr_b_supply8v1">
<Variables>
<Variable Alias="sirpwr_a_supplyecu_Snsr8vIstat" Input="True" Output="False" />
<Variable Alias="sirpwr_b_supply8v1_qstat" Input="False" Output="True" />
</Variables>
</Model>
</ModelInfo>`
XML 파일을로드하고 테스트하기 위해 실행중인 스크립트는 다음과 같습니다.
`tree = ElementTree.parse('main.xml')
root = tree.getroot()
ElementInclude.include(root)
for element in root:
print element.tag`
'ModelInfo'가 'sub_x'xml 파일에서 복사되기 때문에 xpointer가 작동하지 않습니다.
ElementInclude
XInclude를 모두 지원하지는 않습니다. 요소 의 xpointer
속성 <include>
은 무시됩니다.
lxml 및 xinclude()
메소드를 사용 하여 원하는 방식으로 작동합니다 .
from lxml import etree
tree = etree.parse('main.xml')
tree.xinclude()
print etree.tostring(tree)
XPointer xpointer()
체계는 W3C 권장 사항의 상태에 도달 한 적이 없습니다 (여전히 작업 초안 임). libxml2 (lxml 뒤에있는 C 라이브러리)에서 구현되었지만 다른 곳에서는 거의 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다