2

我正在尝试为媒体服务器标记语言 (MSML) - RFC 5707找到有效的 xml 模式。我需要编写一个解析器,但我只找到这些规范文档。我将它们复制并粘贴到 .xsd 文件中。但似乎他们是一个错误。我使用 JAXB 从这些模式类创建,但出现此错误:(我将错误消息翻译成英文)

[错误] Elementtyp "xs:complexType" 需要适当的 Endtag "</xs:com plexType>"。第 332 行 von 文件:/E:/Downloads/jaxb-ri-2.2.6/bin/msml-dialog-base-datatypes.xsd

我用eclipse检查了文件,问题出在这个元素定义中:

<xs:element name="dtmfgen" substitutionGroup="primitive">
  <xs:complexType>
    <xs:extension base="primitiveType">
     <xs:choice minOccurs="0">
      <xs:element name="dtmfgenexit">
       <xs:complexType>
        <xs:group ref="sendType"/>
       </xs:complexType>
      </xs:element>
     </xs:choice>
     <xs:attribute name="level" use="optional" default="-6">
      <xs:simpleType>
       <xs:restriction base="xs:nonPositiveInteger">
        <xs:maxInclusive value="0"/>
        <xs:minInclusive value="-96"/>
       </xs:restriction>
      </xs:simpleType>
     </xs:attribute>
     <xs:attribute name="digits" type="dtmfDigits.datatype"
                   use="required"/>
     <xs:attribute name="dur" type="posDuration.datatype" use="optional"
                   default="100ms"/>
     <xs:attribute name="interval" type="posDuration.datatype"
                   use="optional" default="100ms"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>

我找不到解决方案来解决它,所以也许你们中的某个人可以帮助我。或者给我一个 MSML 的有效 xsd 包的链接。或者更好的是有人为我提供解析器。?

谢谢G。

4

2 回答 2

0

发布的错误消息很可能与剪切和粘贴对您的工作方式有关。

尽管如此,即使你解决了这个问题,你仍然会遇到两个问题(知道......至少对于那些以前尝试过的人来说......):

  • 使用无效模式(未转义 -)
  • msml元素的重复定义(一次在 msml-core 中,一次在 msml.xsd 中)。

该档案包含您需要的所有文件;它们是有效的,这意味着已经应用了所有必要的修复。

于 2012-12-21T16:03:45.223 回答
0

您是复制/粘贴错误的受害者,该错误导致您的声明副本格式错误:在此过程中,xs:complexContent(作为 的子项xs:complexType和父项出现xs:extension)的开始标记被删除。

我推断这是一个复制/粘贴错误,因为 RFC 2707 中的 XSD 模式文档没有这个问题。

于 2012-12-21T15:56:43.287 回答