在创建基于XML的新格式或语言之前,开发人员应该知道什么?

时间:2010-02-10 22:57:35

标签: xml

假设您必须编写一种基于xml(无选择)的语言,最终将成为某种“标准”格式,被全球数十亿应用程序使用,或者至少您希望它 该语言将类似于互联网的HTML,但在另一个特定的域中。一些非常简单和描述性的东西,将由工具和其他应用程序解释。

现在假设您对XML的工作原理有基本的了解(您知道标签的工作原理,它们可能具有属性以及元素中可能存在元素......)。 你真的很了解这个领域,但你以前从未编写过基于语言或xml的格式规范(除了公司内部工具的一些基本xml格式之外)。

你还需要知道做什么工作吗?也许某些XML语言特定的功能?也许使用XSD文件作为规范文件?

总结:在为这种语言设计和编写规范时有哪些最佳做法?

9 个答案:

答案 0 :(得分:3)

首先,您需要了解您的问题域真的真的,以确保您的标记能够涵盖这些数十亿应用程序的所有要求。其他一切都是次要的。这不是技术或工具问题。

答案 1 :(得分:3)

博文Using and Abusing XML提供了一些很好的建议,其中包括:

  

另一种流行的XML滥用涉及到   使用XML精简包装任意数据   标签......如下所示:

<key>Name</key><string>Audiobooks</string>
<key>Playlist ID</key><integer>94</integer>
  

在更好的,量身定制的XML文件格式中,我们希望这对像

<name id="94">Audiobooks</name>

答案 2 :(得分:2)

首先,如果确实没有其他任何可以替代使用的东西,那么只能自己做点什么。

保持元素名称简短但/且具有描述性。

如果可能的话,有一个非常严格的架构,不允许多种方式做同样的事情。这样可以防止对可能的内容或如何解释标记产生混淆。

在允许可扩展性时要非常小心,因为这可能会导致严格模式试图阻止的问题。

确保您对架构进行了版本设置并始终尽量避免破坏更改,但/并允许向后兼容新版本。

确保您拥有验证器和其他工具,以便尽可能轻松地使用您的新语言。

答案 3 :(得分:2)

  1. 学习XML架构
    • 不要试图通过允许不同顺序的元素来使您的架构更方便。
    • 通过Internet访问您的架构。您不需要在与命名空间相关的URL上托管它,但这可能很好。
  2. 学习XML命名空间
  3. 学习XPATH
  4. 了解XML INFOSET是什么,并了解序列化它的含义。

答案 4 :(得分:1)

当然,您希望在某个时刻学习XPath。这是(我认为)选择XML的最佳方式。

答案 5 :(得分:1)

绝对使用架构,无论是XSD还是RELAX NG。

答案 6 :(得分:1)

IBM在Principles of XML Design上做了一系列讲述了很多事实。最好的建议是,除此之外,从来没有一种正确的方法:

  • 在您的设计选择中要简明扼要,如果您选择路线A,请随处选择。即: 如果你使用包装元素<books>来保存<book>,那么在任何地方都可以使用包装元素进行收集。

  • 尽可能简洁,以避免混乱。我们认为XML可供人类阅读。

  • 尽可能避免命名空间
  • 它可以通过模式进行验证。

答案 7 :(得分:1)

首先,我同意特雷弗,你必须知道你所覆盖的区域,没有什么比修补后的标准更糟糕了。

第二,你需要至少了解一下xsd和xslt。还有更多关于xpath / xquery的信息,因为您的标准用户可能会使用这些来处理他们的内容。

第三,我建议你尽可能深入地挖掘其他基于XML的标准,看看它们是如何构建的。 XHTML标准非常适合研究,因为它是最古老的XML标准,它的演变是在很长一段时间内通过实际使用来推动的。另外,你可能想要考虑研究原子和rss,xsd(这次是作为一个标准,而不是一种技术)和微格式

答案 8 :(得分:1)

  • Namespaces:它们是什么,何时何地不使用它们,它们如何影响解析
  • Schema Validation/XSD。 XML的一个优点是它易于验证,所以我期望一个Schema来验证所谓的自称为标准的所有内容
  • XPath和其他查询机制(XQuery很少见且与XPath有关,但至少仍然是它自己的标准,至少可以快速查看)
  • 关于escaping stuff,CDATA或其他方式的一般知识
  • 何时使用属性与何时使用子元素
  • 可能的相关标准。这与严格无关,但是例如,如果您需要添加文档签名,则已有标准(例如XML Signature)。基本上每次添加一个函数时,如果已经有一个标准,请快速查看并确定是否值得调整它。如果你至少知道为什么所有其他轮子都会吮吸,重新发明轮子是可以的。
相关问题