我正在尝试使用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;但我不认为我们应该在每个多维数据集中都有{Annotations
,Table
,View
}。我不知道如何验证我的蒙德里亚图式。
答案 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