我有一个像这样的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;。任何帮助将非常感激。感谢。
答案 0 :(得分:0)
外部实体是一种词法工具,您可以将它们视为一种宏观机制。从您的示例中解析的XML是一个元素mappingGroups
,其中包含一个元素configMapping
,其中包含2个引用文件中包含的任何内容。
因此,架构与XML文档是否使用实体(外部或非外部)无关。就XML Schema而言,唯一重要的是在实体替换后XML文档的样子。可能类似于:
<mappingGroups>
<configMapping>
<config>
...
</config>
<stats>
...
</stats>
</configMapping>
</mappingGroups>
这就是编写架构时应该记住的所有内容。