Грешка при валидиране на xml схема „Съдържанието на елемента „flowPara“ не е пълно“

Имам нужда от валиден XSD за XML файл.

Това е xml файл.

<?xml version="1.0" encoding="UTF-8"?>
<edge xmlns="http://www.example.org/flow">
<flowPara
        style="letter-spacing:0px;fill:#000000; 
    font-size:9pt;font-family:Arial;text-anchor:start;text-align:start;"
        id="textArea_38">
        Text Flow checking and
        <flowSpan style="fill:#FA0101; ">
            font color change
            text
            <flowSpan style="fill:#C5A2A2; " />
        </flowSpan>
        in
        <flowSpan
            style="font-style:italic;letter-spacing:0px;fill:#000000; 
    font-size:9pt;font-family:Arial;text-anchor:start;text-align:start;">text
            area
        </flowSpan>
        .
        <flowSpan style="letter-spacing:0px;">
            <flowSpan
                style="text-decoration:underline;letter-spacing:0px;fill:#000000; 
    font-size:9pt;font-family:Arial;text-anchor:start;text-align:start;">Text
                Flow
            </flowSpan>
            checking and
            <flowSpan style="fill:#FA0101; ">
                font color
                change text
                <flowSpan style="fill:#C5A2A2; ">
                    <flowSpan style="fill:#000000; 
    ">in text area.</flowSpan>
                </flowSpan>
            </flowSpan>
        </flowSpan>
    </flowPara>
</edge> 

Това е XSD файл, който създадох.

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"        targetNamespace="http://www.example.org/flow"
xmlns:tns="http://www.example.org/flow" elementFormDefault="qualified">
<element name="edge">
    <complexType>
        <sequence>
                 <element name="flowPara" maxOccurs="unbounded">
                                        <complexType mixed="true">
                                            <sequence>
                                                <element name="flowspan" maxOccurs="unbounded">
                                                    <complexType mixed="true">
                                                        <sequence>
                                                            <element name="flowspan" maxOccurs="unbounded">
                                                                <complexType mixed="true">
                                                                    <simpleContent>
                                                                        <extension base="string">
                                                                            <attribute name="style" type="string" />
                                                                        </extension>
                                                                    </simpleContent>
                                                                </complexType>
                                                            </element>
                                                        </sequence>
                                                        <attribute name="style" type="string" />
                                                    </complexType>
                                                </element>
                                            </sequence>
                                            <attribute name="style" type="string" />
                                            <attribute name="id" type="string" />
                                        </complexType>

                                    </element>
</sequence>
    </complexType>
</element>
</schema>

изправих се пред такъв вид изключение

Изключение: cvc-complex-type.2.4.b: Съдържанието на елемента „flowPara“ не е пълно. Очаква се едно от „{"http://www.example.org/flow":flowspan} .


person Maheshkumar.V    schedule 18.03.2014    source източник


Отговори (2)


1) Във вашата схема имате flowspan с s с малки букви на няколко места. Променете това на flowSpan.

2) Декларирахте mixed съдържание, но вашият flowSpan елемент не е незадължителен, така че винаги ще се изисква и няма да го валидира, ако съдържанието на flowSpan не съдържа друг flowSpan. Добавете minOccurs="0", така че да стане по избор.

3) Не е необходимо да декларирате просто съдържание, ако имате смесено съдържание с незадължително вложено flowSpan. Вашата схема може да бъде реорганизирана с помощта на препратка за flowSpan, тъй като се използва рекурсивно. Можете да опитате това:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"        
        targetNamespace="http://www.example.org/flow"
        xmlns:tns="http://www.example.org/flow" 
        elementFormDefault="qualified">

    <element name="edge">
        <complexType>
            <sequence>
                <element name="flowPara" maxOccurs="unbounded">
                    <complexType mixed="true">
                        <sequence>
                            <element ref="tns:flowSpan" maxOccurs="unbounded"/>
                        </sequence>
                        <attribute name="style" type="string" />
                        <attribute name="id" type="string" />
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>

    <element name="flowSpan">
        <complexType mixed="true">
            <sequence>
                <element ref="tns:flowSpan" minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
            <attribute name="style" type="string" />
        </complexType>
    </element>
</schema>
person helderdarocha    schedule 19.03.2014

Не сте казали minOccurs='0', така че изисква такъв.

person bmargulies    schedule 19.03.2014