2014-02-20 99 views
0

我正在研究基於子集Docbook 5標記的XSD。下面是這個XSD只爲說明問題解的幾個標籤的非常小的一部分:如何在基於Docbook標籤的XSD中包含MathML標籤?

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" targetNamespace="http://docbook.org/ns/docbook" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/> 
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> 
<xs:element name="book"> 
    <xs:annotation> 
     <xs:documentation>Root element</xs:documentation> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element ref="chapter" maxOccurs="unbounded"/> 
     </xs:sequence> 
     <xs:attribute ref="xml:lang" use="required"/> 
    </xs:complexType> 
</xs:element> 
<xs:element name="chapter"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element ref="informalequation" maxOccurs="unbounded"/> 
     </xs:sequence> 
     <xs:attribute ref="xml:lang" use="required"/> 
     <xs:attribute ref="xml:id" use="required"/> 
    </xs:complexType> 
</xs:element> 
<xs:element name="informalequation"> 
    <xs:complexType> 
     <xs:attribute ref="xml:id"/> 
     <xs:attribute name="condition" use="required"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:enumeration value="block"/> 
        <xs:enumeration value="inline"/> 
       </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute> 
    </xs:complexType> 
</xs:element> 

眼下,元<informalequation>沒有內容,只有屬性。我想要做的就是把它裏面的MATHML格式,如公式:

<math display='block'> 
<mrow> 
    <msqrt> 
    <mn>2</mn> 
    </msqrt> 
</mrow> 
</math> 

而且這裏的問題是...我不知道該怎麼做,因爲MATHML標籤中不包含的Docbook ...我使用Altova XMLSpy 2011企業版創建我的XSD。我已經從http://www.w3.org/Math/XMLSchema/下載了MathML 3 XSD,但我不知道下一步該怎麼做。有誰知道如何做到這一點,並得到一個有效的XSD這樣我就可以創建基於其與此結構的XML?:

<?xml version="1.0" encoding="UTF-8"?> 
<book xml:lang="en" version="5.0" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> 
<chapter xml:lang="en" xml:id="1"> 
    <informalequation condition="block"> 
     <math display='block'> 
      <mrow> 
       <msqrt> 
        <mn>2</mn> 
       </msqrt> 
      </mrow> 
     </math> 
    </informalequation> 
</chapter> 

我感謝所有幫助。

謝謝!

回答

0

首先你要算算是在MATHML命名空間,這樣

<math display='block' xmlns="http://www.w3.org/1998/Math/MathML"> 

那麼我想你可以通過

 <xs:sequence> 
     <xs:element ref="mml:math" xmlns:mml="http://www.w3.org/1998/Math/MathML"/> 
    </xs:sequence> 

取代<xs:simpleType>,在你驗證了MATHML名[王牌安排與MathML模式相關聯。

(但我從不使用XSD,我個人只會在RelaxNG中編寫並翻譯:-)