Android XSD字段上的Eclipse错误“;未指定资源类型";

Android XSD字段上的Eclipse错误“;未指定资源类型";,android,xml,eclipse,xsd,field,Android,Xml,Eclipse,Xsd,Field,这是关于以下问题的后续问题: 我使用Eclipse。我创建了一个带有应答代码的XSD文件,并出现以下3个错误: error: Error: No resource type specified (at 'xpath' with value '@id'). fsm.xsd /test/res/xml line 24 Android AAPT Problem error: Error: No resource type specified (at 'xpath' with value '@to

这是关于以下问题的后续问题:

我使用Eclipse。我创建了一个带有应答代码的XSD文件,并出现以下3个错误:

error: Error: No resource type specified (at 'xpath' with value '@id'). fsm.xsd /test/res/xml   line 24 Android AAPT Problem
error: Error: No resource type specified (at 'xpath' with value '@toState').    fsm.xsd /test/res/xml   line 32 Android AAPT Problem
error: Error: No resource type specified (at 'xpath' with value '@fromState').  fsm.xsd /test/res/xml   line 28 Android AAPT Problem
使用xsd的带有XMLSchema实例的XML测试文件验证OK,即使出现上述3个错误。
我想知道这些错误是Eclipse中的一个小故障,还是我需要定义其他东西来消除它们

XSD源代码:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <xs:element name="FSM">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="state">
                    <xs:complexType>
                        <xs:attribute name="id" type="xs:unsignedByte" use="required"/>
                        <xs:attribute name="name" type="xs:string" use="required"/>
                    </xs:complexType>
                </xs:element>
                <xs:element name="transition">
                    <xs:complexType>
                        <xs:attribute name="fromState" type="xs:unsignedByte" use="required"/>
                        <xs:attribute name="toState" type="xs:unsignedByte" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:key name="PKStates">
            <xs:selector xpath="state"/>
            <xs:field xpath="@id"/>
        </xs:key>
        <xs:keyref name="FKTransitionToStatesFrom"  refer="PKStates">
            <xs:selector xpath="transition"/>
            <xs:field xpath="@fromState"/>
        </xs:keyref>
        <xs:keyref name="FKTransitionToStatesTo" refer="PKStates">
            <xs:selector xpath="transition"/>
            <xs:field xpath="@toState"/>
        </xs:keyref>
    </xs:element>
</xs:schema>

XML测试文件:

<?xml version="1.0" encoding="utf-8"?>
<FSM xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="fsm.xsd">
    <state name="S1" id="1"/>
    <state name="S2" id="2"/>
    <state name="S3" id="3"/>
    <transition toState="1" fromState="2"/>
</FSM>


这是一个Eclipse问题,很可能与您的设置有关。该模式在各种工具和平台中都非常有效,包括QTAssistant、Visual Studio、NetBeans、Xerces和Eclipse Helios(我知道,有点旧)。

这是一个Eclipse问题,很可能与您的设置有关。该模式在各种工具和平台中都非常有效,包括QTAssistant、Visual Studio、NetBeans、Xerces和Eclipse Helios(我知道,有点旧)。

这是我发现的在Eclipse上工作的旁路。
请注意,原始语法是完全合法的,但Eclipse XSD validator似乎不接受它。
属性中每个
xpath
的前缀/似乎起到了作用,在XML文件上使用此XSD模式的验证是正确执行的。更重要的是,Eclipse没有将XSD文件标记为错误,并且成功地进行了项目编译

    <xs:key name="PKStates">
        <xs:selector xpath="state"/>
        <xs:field xpath=".//@id"/>
    </xs:key>
    <xs:keyref name="FKTransitionToStatesFrom"  refer="PKStates">
        <xs:selector xpath="transition"/>
        <xs:field xpath=".//@fromState"/>
    </xs:keyref>
    <xs:keyref name="FKTransitionToStatesTo" refer="PKStates">
        <xs:selector xpath="transition"/>
        <xs:field xpath=".//@toState"/>
    </xs:keyref>

这是我发现的在Eclipse上工作的旁路。
请注意,原始语法是完全合法的,但Eclipse XSD validator似乎不接受它。
属性中每个
xpath
的前缀/似乎起到了作用,在XML文件上使用此XSD模式的验证是正确执行的。更重要的是,Eclipse没有将XSD文件标记为错误,并且成功地进行了项目编译

    <xs:key name="PKStates">
        <xs:selector xpath="state"/>
        <xs:field xpath=".//@id"/>
    </xs:key>
    <xs:keyref name="FKTransitionToStatesFrom"  refer="PKStates">
        <xs:selector xpath="transition"/>
        <xs:field xpath=".//@fromState"/>
    </xs:keyref>
    <xs:keyref name="FKTransitionToStatesTo" refer="PKStates">
        <xs:selector xpath="transition"/>
        <xs:field xpath=".//@toState"/>
    </xs:keyref>


再次感谢。顺便说一下,我从state id属性中删除了
use=required
,因为键PKStates似乎强制该属性存在。@ilombo,我不会删除它;这似乎是多余的,但请考虑某些XSD感知处理器忽略键/KEYRF,所以你会发现自己有点麻烦…互操作性是第一位的…很抱歉取消标记您的答案。事实证明这不是一个配置问题,我发现了一个旁路,我在一个单独的答案中发布了它。因此,为了其他程序员的利益,我必须标记旁路答案。再次感谢。顺便说一下,我从state id属性中删除了
use=required
,因为键PKStates似乎强制该属性存在。@ilombo,我不会删除它;这似乎是多余的,但请考虑某些XSD感知处理器忽略键/KEYRF,所以你会发现自己有点麻烦…互操作性是第一位的…很抱歉取消标记您的答案。事实证明这不是一个配置问题,我发现了一个旁路,我在一个单独的答案中发布了它。因此,为了其他程序员,我必须标记旁路答案。