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