You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Velocity模板是否有XSD Schema目录?VTL与DITA合并验证需求

解决VTL标签无法通过DITA Schema验证的问题

不存在官方提供的默认XSD Schema可直接添加到主目录,让包含#foreach、#if等VTL标签的文件直接通过DITA验证。你可以通过以下几种方式解决:

方案1:用CDATA块包裹VTL指令

将VTL指令放在CDATA块中,XML解析器会将其视为纯文本,不会触发Schema验证错误,同时Velocity通常能正常解析CDATA内的指令。示例代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "technicalContent/dtd/topic.dtd">
<section id="sample">
  <title>samplelist</title>
  <ol><![CDATA[#foreach($issue in $issues)]]>
    <li>$issue.fields.summary ($issue.Key)</li>
    <![CDATA[#end]]>
  </ol>
</section>

方案2:用DITA原生元素标记VTL内容

使用DITA合法的<ph>元素包裹VTL指令,并添加自定义属性标记这是VTL内容,无需修改Schema即可通过验证。示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "technicalContent/dtd/topic.dtd">
<section id="sample">
  <title>samplelist</title>
  <ol>
    <ph class="- topic/ph vtl-instruction">#foreach($issue in $issues)</ph>
    <li>$issue.fields.summary ($issue.Key)</li>
    <ph class="- topic/ph vtl-instruction">#end</ph>
  </ol>
</section>

方案3:自定义扩展DITA Schema

如果必须通过Schema直接验证包含VTL指令的内容,可以基于官方DITA XSD进行扩展:

  • 找到对应元素(如<ol>、<li>)的内容模型定义
  • 修改其complexType为mixed="true",并添加允许VTL指令的文本约束;或者自定义一个<vtl>元素,将其加入DITA元素的内容模型中,把VTL指令放在该元素内。

这种方式需要维护自定义Schema,适合有严格Schema验证要求的场景。

内容的提问来源于stack exchange,提问作者tarini sunil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:22:33