Hacer que los elementos XML sean necesarios según los valores de los atributos en XSD
Mi requisito es tener un archivo XSD que verifique los elementos en función de los valores de los atributos. Pude escribir XSD hasta un punto en el que puedo restringir los valores de atributo deApplication/@Type
. ¿Alguien puede ayudarme a completar el archivo XSD donde puedo hacer algunos elementos necesarios en función de laApplication/@Type
¿atributo?
yo quiero hacer
PackageArg
requerido solo cuandoApplication/@Type
es "Lote"Version
requerido solo cuandoApplication/@Type
es "Servicio"Project
requerido solo cuandoApplication/@Type
es Web "o" Servicio "Archivo XML
<Applications>
<Application Name="ConfigManagement" Type="Web">
<ProjectDirName>ConfigManagement</ProjectDirName>
<Project>Web.ConfigManagement.csproj</Project>
<OutputDirName>ConfigManagement</OutputDirName>
</Application>
<Application Name="Util" Type="Web">
<ProjectDirName>Web</ProjectDirName>
<Project>Web.csproj</Project>
<OutputDirName>Util</OutputDirName>
</Application>
<Application Name="ConfigService" Type="Service">
<ProjectDirName>WebServices\ConfigService</ProjectDirName>
<Project>ConfigService.csproj</Project>
<Version>2015\04</Version>
<OutputDirName>ConfigService</OutputDirName>
</Application>
<Application Name="DeliverEmail" Type="Batch">
<ProjectDirName>\Batch\DeliverEmail</ProjectDirName>
<PackageArg>Release</PackageArg>
<OutputDirName>Tidal\DeliverEmail</OutputDirName>
</Application>
</Applications>
Archivo XSD
<xs:element name="Applications" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Application" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:all>
<xs:element type="xs:string" name="ProjectDirName"/>
<xs:element type="xs:string" name="Project" minOccurs="0"/>
<xs:element type="xs:string" name="Version" minOccurs="0"/>
<xs:element type="xs:string" name="PackageArg" minOccurs="0"/>
<xs:element type="xs:string" name="OutputDirName"/>
</xs:all>
<xs:attribute type="xs:string" name="Name" use="optional"/>
<xs:attribute name="Type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Web"/>
<xs:enumeration value="Batch"/>
<xs:enumeration value="Service"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>