我正在与OSIS http://bibletechnologies.net/(开放圣经信息标准),用于描述圣经和相关文本的 XML 模式。当我第一次查看 XML 示例时,我注意到一些以前在 XML 中从未见过的奇怪之处。主要是关闭的标签,然后是逻辑上属于关闭标签内的内容。看完之后文档 http://img.forministry.com/7/7B/7BB51FB8-84B3-4FF3-939ED473FA90A632/DOC/OSIS2_1UserManual_06March2006_-_with_O%27Donnell_edits.PDF,我发现他们将这种类型的标记称为“里程碑”。
在这种情况下,使用它是因为引文可以从一节开始,并在结束之前跨越几节。这看起来像是一个 hack,我必须做一些编码来解析和搜索,并显示 Web 的 XML 部分。虽然我知道这是技术上有效的 XML,但无法[轻松]根据模式验证其正确性,并且标准 XML 解析 API 将无法获取里程碑之间的元素。我相信有更好的方法可以形成这个“标准”。您对这种类型的标记有何看法?我还没有真正找到任何其他关于这种做法的参考,它还用在哪里。有效吗?
从文档中...
XML 中元素的标准形式
是一个开始标签和一个结束标签:
...
。用于处理标记
然而,跨越国界的特殊
必须使用表格。它由两个组成
相同的完全空的实例
元素类型:一个标记开始
一个点,一个标记结束
观点。两个空元素标识
他们自己知道哪个是开始
哪一个是结束,并共同识别
他们自己由一个sID属性
(传统元素的开始)
和eID属性(结尾
传统元素)、价值观
其中必须匹配。
空元素在 XML 中表示为
最后一个带有“/”的标签
">":因此 而不是 或
。以这种方式使用的元素是
通常称为‘里程碑,' 和
OSIS 中的那些特定要素
允许这种替代编码是
因而被称为‘具有里程碑意义的.’
这是一个简短的例子......
<verse osisID="Acts.7.2" sID="a72"/>To this he replied:
<speech who=”Stephan”>Brothers and fathers, listen to me! The God of glory appeared
to our father Abraham while he was still in Mesopotamia, before he lived in Haran
<verse eID=”a72”/>
...
<verse osisID="Acts.7.6" sID="a76"/>God spoke to him in this way: <q
type=”embedded” marker=”'”>Your descendants will be strangers in a country not
their own, and they will be enslaved and mistreated four hundred years. <verse
eID="a76"/>
<verse osisID="Acts.7.7" sID="a77"/>But I will punish the nation they serve as
slaves,</q> God said, <q type=”embedded” marker=”'”>and afterward they will come out
of that country and worship me in this place.</q><verse eID="a77"/>
...
<verse osisID="Acts.7.53" sID="a79"/>you who have received the law that was put
into effect through angels but have not obeyed it.
<verse eID="a79"/>
</speech>
该标记没有任何非法之处,至少就 XML 语法而言是如此。
这是一个巧妙的解决方案,解决了必须将文本字符串分成两个重叠方案中的片段的问题。您省略了封闭的标签,因此不可能直观地了解层次结构,但我会假设它在那里,并尝试以逻辑方式组织事物作为叙述。然后需要指出诗句中断的位置,一般来说,它们可以是完全任意的。它们实际上是流程中的点事件(术语:里程碑)。
我唯一不同意的是为诗句设置“开始”和“结束”标记。这会带来潜在的错误,因为无法在 XML 本身内验证开始和结束的括号。我只会使用“开始”标记。当然,这是假设每节经文的结尾对应于另一节经文的开头,或分层部分的结尾。 IE。两节经文之间不可能有什么东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)