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

如何将XML文件中的允许属性值载入RELAX NG语法文件?

关于RELAX NG从普通XML加载属性值的问题

我有一份RELAX NG语法文件,想从普通XML文件里载入允许的属性值,请问能不能直接加载,还是必须先用XSLT把XML转成RELAX NG文件?我觉得后者不太合理。

相关代码示例:

<element name="language">
  <externalRef href="language.rng"/>
</element>

不需要先用XSLT把普通XML转成RELAX NG文件,RELAX NG支持直接从普通XML中提取允许的属性值,不过得借助支持XPath扩展的处理器(比如Jing)来实现:

  • 如果你的普通XML是属性值的枚举列表(比如language.xml里存了所有允许的语言代码),可以用RELAX NG的<data>元素配合XPath直接读取这些值:
    假设language.xml内容如下:

    <allowedLanguages>
      <lang>en</lang>
      <lang>zh</lang>
      <lang>fr</lang>
    </allowedLanguages>
    

    对应的RELAX NG语法可以写成:

    <element name="language">
      <data type="string">
        <param name="pattern">
          <xpath>document('language.xml')/allowedLanguages/lang/text()</xpath>
        </param>
      </data>
    </element>
    
  • 你当前用<externalRef>指向language.rng的写法,是引用RELAX NG语法片段的标准方式,但如果要关联普通XML里的属性值,就需要改用上述XPath扩展的方式,不用提前转换XML文件。

内容的提问来源于stack exchange,提问作者Stefan Jung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:52:11