XML布尔类型介绍及应用实例

805 阅读3分钟

XML boolean

XML布尔型简介

XML布尔类型是一种XSD简单数据类型,代表真或假或是/否的值作为它们的类型,并分配一个值作为0代表假,1代表真。一个关键字bool定义了它,它是一个简单的资源,在name属性中被引用。在一个单一的XML文件中,我们可以结合许多bool资源。正如W3C XML模式所定义的那样,所有的标准数据类型都在这里定义;一个简短的例子是xsd: boolean。

XML boolean的语法

一般的结构是这样的:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool
name="b_name"
>[true | false]</bool>
</resources>

以下是模式中的布尔声明。

<xsd: attribute name = “Age” type=:xsd: Boolean”/>

Xsd : boolean

布尔值是一个整数值,其值为'0'和'1',代表逻辑上的是或不是。避免使用大写字母。

布尔类型如何在XML中工作?

这个类型是由简单数据类型派生出来的,带有数值空间。布尔数据类型主要用于二进制逻辑目的。这属于杂项数据类型的范畴。

布尔型的逻辑模式定义如下:

<xsd:attribute name="service" type="xsd:boolean"/

下面是XML文档中的一个例子,这个属性与元素一起显示:

<Employee service="false">
< Employee_name >Mac mike</ Employee_ name>
</ Employee>

任何对模式定义的修改对象或用户定义的模式都应该使用这种类型的数据。这里不支持多值布尔属性,只使用单值。

android应用程序下的Xml文件可以定义为:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="display_screen">true</bool>
<bool name="resolution adjust">true</bool>
</resources>
<xsd:simpleType name="trueOrFalse">
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="true" />
<xsd:pattern value="false" />
</xsd:restriction>
</xsd:simpleType>

该元素在xml中可能看起来像:

<prize pattern="true"> 850 </prize>

另一种模式是这样的:

<xs:simpleType name="boolean" id=”Boolean”>
<xs:restriction base="xs:anySimpleType">
<xs:whitespace="true" />
</xs:restriction>
</xs:simpleType>

在XML样式表的情况下,它被指定为:

<xsl:template match="Items">
<p>Items in the stock:
<xsl:text> </xsl:text>
<xsl:value-of select="fn:boolean(@Item Numbers)"/>
</p>
</xsl:template

在XML模式中,是-非布尔型属性被放置,布尔值的表达被限制。该格式在下面显示了简单数据类型枚举的概念。

<xs:simpleType name="y-n">
<xs:annotation>
<xs:documentation>in case of XSD yes-no format is used for values not an expressions.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="yes" />
<xs:enumeration value="no" />
</xs:restriction>
</xs:simpleType>

在API的情况下,少数字段条目被定义为布尔数据类型,它可能被重新定义为int值或带列表的枚举。当我们有更多的真或假的选择时就会发生这种情况。在这种情况下,最好为应用程序使用一个兼容性级别。

带有nillable属性的模式定义。

<xsd:element name="conversion" type="xsd:boolean" nillable="true" default="false">
<xsd:annotation>
<xsd:documentation>Conversion of the type</xsd:documentation>
</xsd:annotation>
</xsd:element>

XML布尔型的例子

下面给出的是对输入值进行类型检查的例子,以确定XML文档的形式是否良好。这里的数据值被映射到XML元素中。

例子#1

odrs.xsd

代码

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="name" type="xs:token"/>
<xs:element name="qualification" type="xs:token"/>
<xs:element name="born" type="xs:date"/>
<xs:element name="dead" type="xs:date"/>
<xs:element name="isbn" type="xs:NMTOKEN"/>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="available" type="xs:boolean"/>
<xs:attribute name="lang" type="xs:language"/>
<xs:element name="title">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attribute ref="lang"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="library">
<xs:complexType>
<xs:sequence>
<xs:element ref="book" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="author">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="born"/>
<xs:element ref="dead" minOccurs="0"/>
</xs:sequence>
<xs:attribute ref="id"/>
</xs:complexType>
</xs:element>
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element ref="isbn"/>
<xs:element ref="title"/>
<xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="character" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="id"/>
<xs:attribute ref="available"/>
</xs:complexType>
</xs:element>
<xs:element name="character">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="born"/>
<xs:element ref="qualification"/>
</xs:sequence>
<xs:attribute ref="id"/>
</xs:complexType>
</xs:element>
</xs:schema>

ord.xml

<?xml version="1.0" encoding="UTF-8"?>
<libraryxmlns:xs="http://www.w3.org/2001/XMLSchema-instance" SchemaLocation="odrs.xsd">
<book id="b0836217462" available="true">
<isbn>1111111111</isbn>
<title lang="en">Java</title>
<author id="CMS">
<name></name>
<born>2008-11-26</born>
<dead>2000-02-12</dead>
</author>
<character id="Snoopy">
<name>Snoopy</name>
<born>1950-10-04</born>
<qualification>not</qualification>
</character>
</book>
</library>

解释

  • 在上面的例子中,一个布尔值被编码为真或假,属性类型为'name'。
  • 当我们执行一个XML文件时,我们在输出中得到以下类型的布尔值。

输出

XML boolean 1

例子#2

perchema.xsd

代码

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="College" targetNamespace="College" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Faculty" type="FacultyType"/>
<xs:element name="Result">
<xs:complexType>
<xs:sequence>
<xs:element ref="College" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="College">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="Faculty" type="FacultyType"/>
<xs:element name="Principal" type="FacultyType"/>
</xs:choice>
<xs:element name="Dept" type="xs:boolean" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="noOfWorkers" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:complexType name="FacultyType">
<xs:sequence>
<xs:element name="FullName" type="xs:string" minOccurs="0"/>
<xs:element name="SurName" type="xs:string" minOccurs="0"/>
<xs:element name="Address" type="xs:boolean" minOccurs="0"/>
<xs:element name="Idno" type="xs:string"/>
<xs:element name="YearsOfExperience" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

per.xml

代码

<?xml version="1.0" encoding="utf-8"?>
<Result xmlns="College" xsi:schemaLocation="perschema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<College noOfWorkers="-54250">
<Principal>
<SurName>string</SurName>
<Idno>string</Idno>
</Principal>
<Faculty>
<FullName>string</FullName>
<SurName>string</SurName>
<Address>boolean</Address>
<Idno>string</Idno>
</Faculty>
<Dept>boolean</Dept>
</College>
</Result>

解释

  • 在学院文件中给地址标签元素的bool值'yes'或'no'。模式部分定义了地址元素的类型。

输出

XML boolean 2

例子#3

航空公司系统。

air.xsd

代码

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Backoff">
<xs:complexType>
<xs:sequence>
<xs:element name="Airlines">
<xs:complexType>
<xs:sequence>
<xs:element name="Airline" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Flight" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:int" name="Ano"/>
<xs:element type="xs:short" name="Acode"/>
<xs:element type="xs:float" name="rREAL64" minOccurs="0"/>
<xs:element type="xs:string" name="sSTRING"/>
<xs:element type="xs:string" name="bBOOL"/>
<xs:element type="xs:short" name="Adev"/>
</xs:sequence>
<xs:attribute type="xs:byte" name="Instance" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Flight2" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="sSTRING"/>
<xs:element type="xs:string" name="bBOOL"/>
<xs:element type="xs:byte" name="Adev"/>
</xs:sequence>
<xs:attribute type="xs:byte" name="Instance" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="Name" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

Airline.xml

<?xml version = "1.0" encoding="utf-8" ?>
<Backoff>
<Airlines>
<Airline Name=" Western">
<Flight Instance="1">
<Ano>123456789</Ano>
<Acode>5425</Acode>
<sSTRING>This is Adria Airways</sSTRING>
<bBOOL>true</bBOOL>
<Adev>200</Adev>
</Flight>
<Flight Instance="2">
<Ano>44582351</Ano>
<Acode>20215</Acode>
<rREAL64>234.56789</rREAL64>
<sSTRING>This is Air France</sSTRING>
<bBOOL>false</bBOOL>
<Adev>-10</Adev>
</Flight>
<Flight Instance="3">
<Ano>345678901</Ano>
<Acode>3456</Acode>
<sSTRING>This is Delta Airlines</sSTRING>
<bBOOL>true</bBOOL>
<Adev>250</Adev>
</Flight>
</Airline>
<Airline Name="Asia">
<Flight2 Instance="1">
<sSTRING>This is Emirates Airlines</sSTRING>
<bBOOL>false</bBOOL>
<Adev>-88</Adev>
</Flight2>
<Flight2 Instance="2">
<sSTRING>This is Malaysia Airlines</sSTRING>
<bBOOL>true</bBOOL>
<Adev>-19</Adev>
</Flight2>
</Airline>
</Airlines>
</Backoff>

解释一下

  • 上面的例子为元素标签flight选择了bool值,值为'true'或'false'。

总结

希望这篇文章中关于XML布尔的信息能给二进制逻辑提供很好的思路,并通过不同的模式化类型给出准确的方向。我们在这里看到的数据类型是与XML Schema命名空间相关的。这个概念很简单,可以让读者理解其他的功能。