如何通过Stylesheet定制ArcGIS中元数据的显示?

 元数据的存储格式为XML格式,XML关于文档浏览的基本思想是将数据与数据的显示分别定义,XML文档本身不涉及各种数据的具体显示方式,文档的显示实际上是通过一个外部样式表,又称为样式单来描述。

    一个样式表就像是一个从数据库中选择数据的查询。元数据的样式表可以选择什么样的元数据元素被显示,并且定义这些元数据元素如何被显示。ArcCatlog中的每个样式表使用不同的规则对同样的元数据进行显示。如图1所示。 

                    
关于Stylesheet定制GIS中元数据的显示

                                           
 图 1 、使用不同的样式表对元数据进行显示

  

     ArcInfo中已经提供了多个样式表供用户选择对元数据进行不同格式的显示,这些元数据包括:FGDC、FGDC ESRI、FGDC Classic、FGDC FAQ、FGDC Geography Network、ISO、ISO Geography Network等。FGDC样式表只FGDC标准的元数据。ISO样式表显示符合ISO标准的元数据。如果用户扩展了FGDC标准或者ISO标准,设置自行设计了元数据的标准,为了显示额外的元数据信息,需要对样式表进行定制。另外,用户也可以根据自己的喜好定制样式表,包括过滤某些不需要的元数据,对元数据的值进行替换(比如关键词的中英文替换),界面美工等。

XSL(eXtensible Style sheet Language),一种将XML转换成HTML的语言,一种可以过滤和分类XML数据的语言。

    用XSL样式转换为HTML文档的步骤是:先用XML解释器将XML文档解释成DOM对象,相当于建立了原文档的一个节点树。然后用XML解释器解释XSL文档,用模板匹配的方法去遍历XML节点树,将树中的节点按模板的设定转换为模板指示的显示语言。

特塞尔制图仪的主要功能:

  • 下面简单介绍一下XSL语言的语法

1、xsl:for-each select = "metadata/idinfo/citation/citeinfo/origin" 循环语句,遍历引号中指定的节点;

2、xsl:value-of select = " metadata/idinfo/citation/citeinfo/origin " 赋值语句,取出引号中指定的节点的值

3、xsl:if test="metadata/spref/horizsys/cordsysn/projcsn[. != '']" 判断语句,判断某个节点是否为等于某个值;

4、xsl:choose和xsl:when test=" " 选择语句,相当于用CASE语句对数据进行选择。

  • 例子

1、循环语句和赋值语句的例子:

下面的语句显示数据的发布者:

〈DIV STYLE="font-weight:bold; color:#B22222"〉
Who created this data? 〈!-- 谁创建了这个数据? --〉
〈/DIV〉

该语句是纯粹的HTML语言,用来显示标题,如果希望符合中国用户的习惯,可以将其替换为中文:

〈DIV STYLE="font-weight:bold; color:#B22222"〉

谁创建了这个数据?

〈/DIV〉
〈xsl:for-each select="metadata/idinfo/citation/citeinfo/origin"〉
〈 DIV STYLE="margin-left:0.25in; color:#696969"〉
〈 xsl:value-of / 〉
〈 /DIV〉
〈/xsl:for-each〉
〈BR/〉

这里使用了一个循环语句和一个赋值语句,用来将元数据中的metadata/idinfo/citation/citeinfo/origin的值提取出来,在HTML页面中进行显示。

如果用户添加了自定义的节点,那么也一样可以使用XSL的select语法进行读取,如下面代码所示:

〈DIV STYLE="font-weight:bold; color:#B22222"〉

输入人员名字:

〈/DIV〉
〈xsl:for-each select="metadata/custom/inputperson "〉
〈DIV STYLE="margin-left:0.25in; color:#696969"〉
〈xsl:value-of /〉
〈/DIV〉
〈/xsl:for-each〉
〈BR/〉

2、判断语句的例子:

下面一段代码用来显示数据的投影坐标系统:

〈DIV STYLE="font-weight:bold; color:#B22222"〉

这个数据的坐标系统是什么?

〈/DIV〉
〈xsl:if test="metadata/spref/horizsys/cordsysn/projcsn[. != '']"〉
〈DIV STYLE="margin-left:0.25in; color:#696969"〉
〈SPAN STYLE="font-weight:bold"〉投影坐标系统: 〈/SPAN〉
〈xsl:value-of select="metadata/spref/horizsys/cordsysn/projcsn"/〉
〈/DIV〉
〈/xsl:if〉

其中用到了if判断语句:〈xsl:if test="metadata/spref/horizsys/cordsysn/projcsn[. != '']"〉,如果不某个节点的元数据不为空,那么显示数据。

3、选择语句的例子:

〈xsl:choose〉
〈xsl:when test="metadata/distinfo/resdesc[.='Live Data and Maps']"〉
〈DIV STYLE="margin-left:0.25in; color:#696969"〉
动态地图和数据
〈/DIV〉
〈/xsl:when〉
〈/xsl:choose〉

在定制时,可以用来做关键字替换,FGDC标准的元数据关键字使用英文,如果希望用户看到中文的关键字,那么可以使用选择判断语句测试metadata/distinfo/resdesc节点的值,根据不同的值进行替换,上面的代码就将‘Live Data and Maps'关键字替换为‘动态地图和数据'

了解了这些基本的XSL语法之后,就可以根据用户的要求对元数据进行定制。剩下的工作就是用XSL设计整个页面的样式,尽量实现格式的统一和美观。元数据的节点信息可以从元数据的XML文档中得到。

该XSL文件编写完成后,将其放到%ARCGISHOME%\Metadata\Stylesheets目录中,ArcCatlog中的元数据工具栏中会自动显示选项,使用新的XSL文件来显示元数据。如图2所示:

关于Stylesheet定制GIS中元数据的显示


图 2 、在 ArcCatlog 中选择样式单

根据自定义样式单的元数据显示结果如图3所示。

关于Stylesheet定制GIS中元数据的显示


图 3 :使用自定义样式单显示元数据

    本文简单介绍了如何使用XSL语言对样式表进行定制,以及如何支持用户自定义元数据节点;开发人员可以使用本文提供的方法创建出各种样式表,从而将元数据信息以不同的方式展现在用户面前。

 

转自:http://blog.sina.com.cn/s/blog_5e2b0e870100mf4b.html
阅读更多
个人分类: GIS
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭