验证手动生成的xml架构

时间:2014-06-02 20:29:47

标签: xml java-ee xsd mondrian

我正在尝试使用JSF / J2EE 开发一个应用程序:多维分析应用程序,我生成一个Schema xml文件,现在我想用mondrian.xsd这个生成的代码验证它:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Schema description="test shcema description" name="First Schema9">
    <Cube cache="true" 
          caption="code here" 
          description="cubeInSchema" 
          enabled="true" 
          name="First Cube7"/>
    <Parameter defaultValue="admin" 
               description="parameter role" 
               modifiable="true" 
               name="param name" 
               type="String"/>
</Schema>

但是我在验证中遇到了这个错误:

**cvc-complex-type.2.4.b: The content of the element "Cube" is not complete. One of the values ​​"{Annotations, Table, View}" is expected.**

==&GT;但我不认为我们应该在每个多维数据集中都有{AnnotationsTableView}。我不知道如何验证我的蒙德里亚图式。

1 个答案:

答案 0 :(得分:1)

mondrian.xsd XSD中,Cube元素声明为:

<xsd:element name="Cube" minOccurs="1" maxOccurs="unbounded">
    ...
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="Annotations" type="Annotations" minOccurs="0" maxOccurs="1"/>
            <xsd:group ref="FactTable" minOccurs="1" maxOccurs="1">
                ...
            </xsd:group>
            <xsd:choice minOccurs="1" maxOccurs="unbounded">
                <xsd:element name="DimensionUsage" type="DimensionUsage"/>
                <xsd:element name="Dimension" type="PrivateDimension"/>
            </xsd:choice>
            <xsd:element name="Measure" minOccurs="1" maxOccurs="unbounded">
                ...

从那里宣布chid <Annotations>元素是可选的(minOccurs="0"但{/ 1}}组中的元素,{{ 1}} FactTable<Dimension>个元素必须按顺序存在。

搜索您找到的<DimensionUsage>群组:

<Measure>

这意味着FactTable中必需的元素是<xsd:group name="FactTable"> <xsd:choice> <xsd:element name="Table" type="Table"/> <xsd:element name="View" type="View"/> </xsd:choice> </xsd:group> (或<Cube>),<View>(或<Table>)和{{1 }}。如果它们不存在,您的实例将无法验证。

除此之外,还有一个订单<Dimension>序列中强制执行:<DimensionUsage>必须在 <Measure>后出现(而不是如你的例子)。

我根据您的文件从<Schema>架构生成了最小验证文件。考虑选项<View><Parameter>,所有这些都是强制性的:

mondrian.xsd