外部实体处理的XSD定义

时间:2015-06-24 09:08:45

标签: xml xsd

我有一个像这样的XML定义:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE doc [
    <!ENTITY roomConfig SYSTEM "room/roomConfig.xml">
    <!ENTITY roomStats SYSTEM "room/roomStats.xml">
    ...
]>

<mappingGroups>
    <configMapping>
        &roomConfig;
        &roomStats;
        ...
    </configMapping>
</mappingGroups>

我不知道如何编写XSD来定义&lt; configMapping&gt;节点,特别是引用外部实体处理(XXE)引用的部分:&#39;&amp; roomCofig;&#39;和&#39;&amp; roomStats;&#39;。任何帮助将非常感激。感谢。

1 个答案:

答案 0 :(得分:0)

外部实体是一种词法工具,您可以将它们视为一种宏观机制。从您的示例中解析的XML是一个元素mappingGroups,其中包含一个元素configMapping,其中包含2个引用文件中包含的任何内容。

因此,架构与XML文档是否使用实体(外部或非外部)无关。就XML Schema而言,唯一重要的是在实体替换后XML文档的样子。可能类似于:

<mappingGroups>
   <configMapping>
      <config>
         ...
      </config>
      <stats>
         ...
      </stats>
   </configMapping>
</mappingGroups>

这就是编写架构时应该记住的所有内容。