在实际应用中,经常要用到XML文件来存储相关的信息.而XML文件可以有三种结构:
1:层次结构.
<
DBTableName
>
<
TableInfo
>
<
Name
>
SZYLTJ
</
Name
>
<
Type
>
GB
</
Type
>
<
Info
>
水资源量基本情况统计表(多年平均)
</
Info
>
</
TableInfo
>
<
TableInfo
>
<
Name
>
SZYKFLY
</
Name
>
<
Type
>
GB
</
Type
>
<
Info
>
水资源开发利用情况
</
Info
>
</
TableInfo
>
<
TableInfo
>
<
Name
>
JSL_XZ
</
Name
>
<
Type
>
GB
</
Type
>
<
Info
>
行政分区降水量
</
Info
>
</
TableInfo
>
</
DBTableName
>
即,所有的信息都在元素的形式存储.
2.属性结构
<
DBTableName
>
<
table
type
="gb"
name
="HSL_XZ"
ch
="行政分区耗水量"
/>
<
table
type
="gb"
name
="HSL_LY"
ch
="流域分区耗水量"
/>
<
table
type
="gb"
name
="HLSZ"
ch
="河流水质"
/>
<
table
type
="gb"
name
="HBSZ"
ch
="湖泊水质"
/>
<
table
type
="gb"
name
="SKSZ"
ch
="水库水质"
/>
<
table
type
="gb"
name
="HLWRJC"
ch
="河断面水质监测"
/>
<
table
type
="gb"
name
="PYDXWR"
ch
="平原区地下水水质污染(浅层)"
/>
<
table
type
="gb"
name
="SSJSTSZ"
ch
="市界水体水质"
/>
<
table
type
="gb"
name
="PYDXSZ"
ch
="平原区浅层地下水水质"
/>
<
table
type
="gb"
name
="ZYSS"
ch
="重要水事"
/>
</
DBTableName
>
所有的信息都以属性的形式存储
3.混合结构:以上两种结构的混合.如
<
DBTableName
>
<
table
type
="gb"
>
<
name
>
aa
</
name
>
<
info
>
哈哈
</
info
>
</
table
>
<
table
type
="gb"
>
<
name
>
bb
</
name
>
<
info
>
呵呵
</
info
>
</
table
>
</
DBTableName
>
在asp.net中利用xmldatasource控件进行数据绑定的时候,基绑定的XML数据是有要求的.如在绑定到dropdownlist,gridview等控件的时候,需要XML文档为信息存储在属性里.即上述第二种结构.但如果要数据绑定到treeview控件里,则只能显示没有层次结构性的信息.如果用上述第一第元素结构的XML文件,可以显示详细的层次结构.
要进行这两种结构的软件,只需要包含几句XSL语句的转换文件.
1.转换元素结构文件为属性结构文件:
<?
xml version="1.0"
?>
<
xsl:stylesheet
xmlns:xsl
="http://www.w3.org/1999/XSL/Transform"
version
="1.0"
>
<
xsl:template
match
="/"
>
<
DBTableName
>
<
xsl:for-each
select
="DBTableName/TableInfo"
>
<
table
>
<
xsl:attribute
name
="name"
>
<
xsl:value-of
select
="Name"
/>
</
xsl:attribute
>
<
xsl:attribute
name
="type"
>
<
xsl:value-of
select
="Type"
/>
</
xsl:attribute
>
<
xsl:attribute
name
="info"
>
<
xsl:value-of
select
="Info"
/>
</
xsl:attribute
>
</
table
>
</
xsl:for-each
>
</
DBTableName
>
</
xsl:template
>
</
xsl:stylesheet
>
则第一个示例的输出结果为:
<?
xml version="1.0" encoding="utf-8"
?>
<
DBTableName
>
<
table
name
="SZYLTJ"
type
="GB"
info
="水资源量基本情况统计表(多年平均)"
/>
<
table
name
="SZYKFLY"
type
="GB"
info
="水资源开发利用情况"
/>
<
table
name
="JSL_XZ"
type
="GB"
info
="行政分区降水量"
/>
</
DBTableName
>
2.转换属性信息为元素结构
<?
xml version="1.0"
?>
<
xsl:stylesheet
xmlns:xsl
="http://www.w3.org/1999/XSL/Transform"
version
="1.0"
>
<
xsl:template
match
="/"
>
<
DBTableName
>
<
xsl:for-each
select
="DBTableName/table"
>
<
table
>
<
xsl:element
name
="name"
>
<
xsl:value-of
select
="@name"
/>
</
xsl:element
>
<
xsl:element
name
="type"
>
<
xsl:value-of
select
="@type"
/>
</
xsl:element
>
<
xsl:element
name
="ch"
>
<
xsl:value-of
select
="@ch"
/>
</
xsl:element
>
</
table
>
</
xsl:for-each
>
</
DBTableName
>
</
xsl:template
>
</
xsl:stylesheet
>
输出结果为:
<?
xml version="1.0" encoding="utf-8"
?>
<
DBTableName
>
<
table
>
<
name
>
HSL_XZ
</
name
>
<
type
>
gb
</
type
>
<
ch
>
行政分区耗水量
</
ch
>
</
table
>
<
table
>
<
name
>
HSL_LY
</
name
>
<
type
>
gb
</
type
>
<
ch
>
流域分区耗水量
</
ch
>
</
table
>
<
table
>
<
name
>
HLSZ
</
name
>
<
type
>
gb
</
type
>
<
ch
>
河流水质
</
ch
>
</
table
>
<
table
>
<
name
>
HBSZ
</
name
>
<
type
>
gb
</
type
>
<
ch
>
湖泊水质
</
ch
>
</
table
>
<
table
>
<
name
>
SKSZ
</
name
>
<
type
>
gb
</
type
>
<
ch
>
水库水质
</
ch
>
</
table
>
<
table
>
<
name
>
HLWRJC
</
name
>
<
type
>
gb
</
type
>
<
ch
>
河断面水质监测
</
ch
>
</
table
>
<
table
>
<
name
>
PYDXWR
</
name
>
<
type
>
gb
</
type
>
<
ch
>
平原区地下水水质污染(浅层)
</
ch
>
</
table
>
<
table
>
<
name
>
SSJSTSZ
</
name
>
<
type
>
gb
</
type
>
<
ch
>
市界水体水质
</
ch
>
</
table
>
<
table
>
<
name
>
PYDXSZ
</
name
>
<
type
>
gb
</
type
>
<
ch
>
平原区浅层地下水水质
</
ch
>
</
table
>
<
table
>
<
name
>
ZYSS
</
name
>
<
type
>
gb
</
type
>
<
ch
>
重要水事
</
ch
>
</
table
>
</
DBTableName
>
当然,也可以根据需要转换为混合结构.用到的XSL语句就两种:
如果要生成元素,则用<xsl:element name="">如果生成属性,则为<xsl:attribute name="">.