2 つの「sub_x.xml」ファイルを含む「main.xml」ファイルがあります。インクルード行は、「xpointer」を使用して、インクルード xml の特定のタグのみを指定/インクルードします。ElementTree を使用してこれが正しく機能したかどうかを判断すると、必要なタグだけでなく、「サブ」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 が機能していません。