Oxygen XML 19.1中为teiCorpus框架添加自定义属性correspUnic的方法
可行性说明与操作指南
当然可行!用TEI ODD扩展自定义属性正是TEI框架设计的核心优势之一,完全能满足你给乌加里特语拉丁转写添加对应Unicode字符的需求。既然你对ODD完全陌生,我给你一步步拆解在Oxygen 19.1里的操作流程:
一、先搞懂TEI ODD的核心作用
简单来说,ODD是TEI官方提供的「自定义语法规则」工具——用TEI自身的XML语法来定义你需要的自定义属性、元素,最终生成Oxygen能识别的Schema(比如RNG、XSD),这样你在编辑语料时就能合法使用这个新属性了。
二、具体操作步骤
1. 新建TEI ODD文件
- 打开Oxygen,点击顶部菜单栏的
File > New - 在弹出的新建窗口中,找到
TEI分类,选择TEI ODD,点击Create - 此时会生成一个基础ODD模板,核心节点是
<schemaSpec>,我们的自定义配置都要写在这里面。
2. 定义自定义属性correspUnic
在<schemaSpec>节点内部,添加<attDef>标签来定义你的属性:
<attDef ident="correspUnic" usage="opt"> <desc>关联拉丁转写内容对应的乌加里特语Unicode字符</desc> <datatype> <rng:data type="string"/> <!-- 若仅需单个Unicode字符,可改为`type="token"`更严谨 --> </datatype> </attDef>
参数说明:
ident="correspUnic":指定属性的名称,就是你要的correspUnicusage="opt":表示该属性为可选,不是必填项<desc>:属性的描述文本,方便自己或其他编辑者理解用途<datatype>:定义属性值的类型,string是通用字符串类型,适合多字符场景;如果是单个Unicode字符,用token更合适。
3. 将属性绑定到目标元素(、、等)
我们需要修改TEI原有元素的定义,把correspUnic属性添加进去,有两种方式:
方式一:单个元素绑定
比如给<w>元素添加属性:
<elementSpec ident="w" mode="change"> <attList> <attRef ident="correspUnic"/> </attList> </elementSpec>
mode="change"表示我们是修改现有TEI元素,而非新建元素。
方式二:批量绑定多个元素
如果要给<w>、<g>、<name>等多个元素添加,直接逐个添加<elementSpec>即可:
<elementSpec ident="w" mode="change"> <attList> <attRef ident="correspUnic"/> </attList> </elementSpec> <elementSpec ident="g" mode="change"> <attList> <attRef ident="correspUnic"/> </attList> </elementSpec> <elementSpec ident="name" mode="change"> <attList> <attRef ident="correspUnic"/> </attList> </elementSpec>
4. 从ODD生成Schema文件
Oxygen可以直接把ODD转换成编辑器能识别的Schema:
- 先保存你的ODD文件(比如命名为
UgariticTEI.odd) - 右键点击该文件,选择
TEI > Generate Schema from ODD - 在弹出的窗口中,选择生成的Schema类型(推荐选
Relax NG Compact Syntax或Relax NG XML Syntax,TEI生态常用RNG),指定保存路径后点击OK。
5. 关联自定义Schema到你的语料库文档
现在需要让你的teiCorpus文档使用新生成的Schema:
- 打开你的乌加里特语语料库文档
- 点击Oxygen顶部的
Schema下拉菜单,选择Associate Schema - 找到刚才生成的RNG/XSD文件,选中后点击
OK
完成这一步后,你编辑<w>、<g>、<name>等元素时,就能看到correspUnic属性可以正常添加了,示例:
<w type="verb" correspUnic="𒌋">...</w>
6. (可选)给属性添加值约束
如果你的Unicode字符有固定范围(比如乌加里特语Unicode区间是U+10380到U+1039F),可以在ODD的<datatype>里添加正则约束,让Oxygen自动检查属性值的合法性:
<datatype> <rng:data type="string"> <rng:param name="pattern">[\x{10380}-\x{1039F}]+</rng:param> </rng:data> </datatype>
三、注意事项
- Oxygen 19.1默认已安装TEI插件,完全支持ODD的生成与Schema关联,不用担心版本兼容性问题
- 基础ODD模板已经继承了TEI核心模块(包括teiCorpus),无需额外修改继承关系
- 建议先在小型测试文档中验证属性的可用性,确认无误后再应用到整个语料库
内容的提问来源于stack exchange,提问作者Vanessa
相关产品推荐
相关产品推荐

