有没有办法将一个代码段嵌入另一个代码段?

时间:2010-08-12 11:48:06

标签: xml visual-studio visual-studio-2008 embed code-snippets

我们假设我有

  • 摘录A
  • 摘录B
    其中 摘要 包含 摘要B次 n> 1

现在我已将代码段B 的内容复制到代码段A 中。这样做的缺点是,每当我更改代码段B 时,我都必须另外更改代码段A 。因此,我的问题是是否有某种声明将一个片段嵌入到另一个片段中? 例如
 <externalsnippet src=".\snippetB.snippet" />
 或类似的东西。

1 个答案:

答案 0 :(得分:1)

您可以使用外部解析的通用实体来声明代码段B 的实体引用,然后在代码段A中使用它多次。

当解析片段A时,将扩展实体引用,并且来自片段B的内容将包含在使用该实体的每个位置。

例如,假设您有一个名为snipppetB.xml的文件:

<snippetB>
  <foo>Content goes here</foo>
</snippetB>

代码段A 的文件声明了一个名为snippetB的实体,引用了snippetB.xml并使用了四次:

<!DOCTYPE snippetA [
   <!ENTITY snippetB SYSTEM "./snippetB.xml">
]>
<snippetA>
<a>&snippetB;</a>
<b>&snippetB;</b>
<c>&snippetB;</c>
<d>&snippetB;</d>
</snippetA>

解析snippetA.xml时,XML内容如下所示:

 <snippetA>
 <a>
 <snippetB>
  <foo>Content goes here</foo> 
  </snippetB>
  </a>
 <b>
 <snippetB>
  <foo>Content goes here</foo> 
  </snippetB>
  </b>
 <c>
 <snippetB>
  <foo>Content goes here</foo> 
  </snippetB>
  </c>
 <d>
 <snippetB>
  <foo>Content goes here</foo> 
  </snippetB>
  </d>
  </snippetA>