相当于XML中的#define?

时间:2015-11-30 15:20:09

标签: xml reference dtd

我可以在下面的例子中在我可以引用的单独文件中定义“20”,类似于C / C ++中的#define吗?如果没有,有没有办法达到预期的效果?

n=2

1 个答案:

答案 0 :(得分:0)

当然,它被称为“外部实体”。

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE p [
  <!ELEMENT p (#PCDATA)>
  <!ENTITY width SYSTEM "width.xml">
]>
<p>The width should be &width; cm</p>

width.xml:

<?xml version="1.0" standalone="no" ?>
20

但就个人而言,我不喜欢这种机制,因为它不够灵活。通常我通过XSLT样式表处理我的XML,然后我发现使用处理指令更方便:

<?xml version="1.0" standalone="no" ?>
<p>The width should be <?width?> cm</p>

使用样式表:

<xsl:stylesheet ....>

<xsl:param name="width"/>

<xsl:template match="processing-instruction('width')">
  <xsl:value-of select="$width"/>
</xsl:template>

XSLT方法可以更容易地将宽度值作为参数从应用程序中提供。