Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML模式-可以有多个子元素,但具有唯一的值_Xml_Xpath_Unique - Fatal编程技术网

XML模式-可以有多个子元素,但具有唯一的值

XML模式-可以有多个子元素,但具有唯一的值,xml,xpath,unique,Xml,Xpath,Unique,所以我有一个hotel根元素,它包含一个rooms元素。 在rooms元素中,必须有当前房间的列表: <?xml version="1.0"?> <h:hotel xmlns:h="hotel"> <existingRooms> <room>101</room> <room>102</room> <room>201</room>

所以我有一个hotel根元素,它包含一个rooms元素。 在rooms元素中,必须有当前房间的列表:

<?xml version="1.0"?>
<h:hotel xmlns:h="hotel">
    <existingRooms>
        <room>101</room>
        <room>102</room>
        <room>201</room>
    </existingRooms>
</h:hotel>
具有相同房间号的多个房间应为非法:

<?xml version="1.0"?>
<h:hotel xmlns:h="hotel">
    <existingRooms>
        <room>101</room>
        <room>102</room>
        <room>201</room>
        <room>201</room>
    </existingRooms>
</h:hotel>
当我尝试这样做时,验证器只接受一个房间,这显然不是我的目标:

<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:h="hotel"
    targetNamespace="hotel">
    <element name="hotel">
        <complexType>
            <sequence>
                <element name="existingRooms">
                    <complexType>
                        <sequence>
                            <element name="room" type="integer" maxOccurs="unbounded"/>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
        <unique name="inuqueRoomNumber">
            <selector xpath="existingRooms"/>
            <field xpath="room"/> 
        </unique>
    </element>
</schema>
此问题的解决方案是什么?

更改

    <unique name="inuqueRoomNumber">
        <selector xpath="existingRooms"/>
        <field xpath="room"/> 
    </unique>


嗯,这是一个快速的回答…:-/在哪里可以找到这件事的相关信息,有什么帮助吗?是一个起点,Priscilla Walmsley的书当然更详细。这是一个不同的问题,考虑问一个新问题。
    <unique name="inuqueRoomNumber">
        <selector xpath="existingRooms/room"/>
        <field xpath="."/> 
    </unique>