Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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 如何在xsd中添加元素级别的属性_Xml_Xsd - Fatal编程技术网

Xml 如何在xsd中添加元素级别的属性

Xml 如何在xsd中添加元素级别的属性,xml,xsd,Xml,Xsd,我想使用xsd生成这种xml <UnassignedSecurityRoleUsers> <UserName errorCode= "1" errorMessage="">?</UserName> <UserName errorCode= "1" errorMessage="">?</UserName> .... .... </UnassignedSecurityRoleUsers> ?

我想使用xsd生成这种xml

<UnassignedSecurityRoleUsers>
    <UserName errorCode= "1" errorMessage="">?</UserName>
    <UserName errorCode= "1" errorMessage="">?</UserName>
    ....
    ....
</UnassignedSecurityRoleUsers>

?
?
....
....
我先试试这个

<xsd:element name="UnassignedSecurityRoleUsers" type="UnassignedSecurityRoleUsers"/>
<xsd:complexType name="UnassignedSecurityRoleUsers">  
    <xsd:sequence>  
        <xsd:element name="UnassignedUsers" type="UnassignedUsers" minOccurs="1" maxOccurs="unbounded" />
    </xsd:sequence> 
</xsd:complexType>

<xsd:element name="UnassignedUsers" type="UnassignedUsers"/>  
<xsd:complexType name="UnassignedUsers">  
    <xsd:sequence>  
        <xsd:element name="UserName" type="xsd:string" minOccurs="1" maxOccurs="unbounded" />
    </xsd:sequence> 
    <xsd:attribute name="errorCode" type="xsd:string" />
    <xsd:attribute name="errorMessage" type="xsd:string" /> 
</xsd:complexType>

但这会产生类似的结果

<UnassignedSecurityRoleUsers>  
    <UnassignedUsers errorCode="" errorMessage="" >
        <UserName></UserName>
    </UnassignedUsers>  
    <UnassignedUsers errorCode="" errorMessage="" >
        <UserName></UserName>
    </UnassignedUsers>
...
....
</UnassignedSecurityRoleUsers>

...
....
如果我使用

<xsd:element name="UnassignedSecurityRoleUsers" type="UnassignedSecurityRoleUsers"/>
    <xsd:complexType name="UnassignedSecurityRoleUsers">  
    <xsd:sequence>  
        <xsd:element name="UserName" type="xsd:string" minOccurs="1" maxOccurs="unbounded" />
    </xsd:sequence> 
    <xsd:attribute name="errorCode" type="xsd:string" />
    <xsd:attribute name="errorMessage" type="xsd:string" />
</xsd:complexType>

然后这将生成

<UnassignedSecurityRoleUsers errorCode="" errorMessage="">  
<UserName></UserName>
</UnassignedSecurityRoleUsers>  

我如何使用xsd生成它

<UnassignedSecurityRoleUsers>
    <UserName errorCode= "1" errorMessage="">?</UserName>
    <UserName errorCode= "1" errorMessage="">?</UserName>
    ....
    ....
</UnassignedSecurityRoleUsers>

?
?
....
....

谢谢

如果您提供
用户名
元素
type=“xsd:string”
,那么它就不能有属性。要同时允许文本内容和属性,您需要为元素提供一个扩展了xsd:string的
complexType
simpleContent
,并在该类型而不是
UnassignedSecurityRoleUsers
类型上声明属性:

<xsd:element name="UnassignedSecurityRoleUsers" type="UnassignedSecurityRoleUsers"/>

<xsd:complexType name="UnassignedSecurityRoleUsers">
  <xsd:sequence>  
    <xsd:element name="UserName" minOccurs="1" maxOccurs="unbounded">
      <xsd:complexType>
        <xsd:simpleContent>
          <xsd:extension base="xs:string">
            <xsd:attribute name="errorCode" type="xsd:string" />
            <xsd:attribute name="errorMessage" type="xsd:string" />
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
    </xsd:element>
  </xsd:sequence> 
</xsd:complexType>

这意味着你想将xml错误代码值设置为“1”吗?(问号)默认情况下?@Naren不不不需要值,不需要1和?检查下面的答案。是否正确?有一些在线网站可用于此任务xml-->xsd检查此任务谢谢,但我可以单独定义
,以便在其他两种类型上使用它,因为我需要定义另一个元素
invalidorganizationagroups
,它完全相同。意味着需要文本内容和属性。@Basit不是
simpleContent
,而是它的父级
complexType
——我用一个例子编辑了答案。
<xsd:complexType name="valueWithError">
  <xsd:simpleContent>
    <xsd:extension base="xs:string">
      <xsd:attribute name="errorCode" type="xsd:string" />
      <xsd:attribute name="errorMessage" type="xsd:string" />
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

<xsd:complexType name="UnassignedSecurityRoleUsers">
  <xsd:sequence>  
    <xsd:element name="UserName" minOccurs="1" maxOccurs="unbounded"
                 type="valueWithError"/>
  </xsd:sequence>
</xsd:complexType>