ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

XML 零基础学习笔记 02

2021-07-02 20:30:33  阅读:187  来源: 互联网

标签:XML 02 XSLT 元素 笔记 HTML 文档 样式表


参考文章或资源(顺致谢意)

1. XML系列教程 (w3school.com.cn)

2. XML如何添加注释? - Geeksongs - 博客园 (cnblogs.com)

3. CSS入门_wuyxinu的博客-CSDN博客

上期回顾 (XML 零基础学习笔记 01)

第一部分:XML历史简述

第二部分: 基础认知

第三部分:XML的特点和用途

第四部分:XML的语法(未完成,本文继续)

4.5 XML 中的注释

在 XML 中编写注释的语法与 HTML 的语法很相似:<!-- This is a comment --> 

注释以 <!-- 开始并以 --> 结束
注释可以出现在

  • 文档序言中,包括文档类型定义 (DTD)
  • 文档之后
  • 或文本内容中 

注释不能出现在

  • 属性值中
  • 标记中

注意:分析器在遇到 > 时,就认为注释已结束;然后继续将文档作为正常的 XML 处理。 因此,字符串 > 不能出现在注释中。 除了该限制之外,任何合法的 XML 字符均可以出现在注释中,与 CDATA 节非常类似。 这样,可以从分析器看到的输出流中删除 XML 注释,同时又不会删除文档的内容。(看不懂,之后CDATA学习后应该可以看懂)

4.6 XML的查看

从这个章节开始,进入知识点的嵌套部分,对于初学者,有一点迷惑和混乱。XML是不包含任何显示信息的,这一点要牢记。用几乎所有的浏览器都可以打开XML的原始文件,但是都只是内容的罗列,不会有显示上的变化。

        下面是一个最简单的钟南山前辈告诉飞哥要锻炼身体(我确实是受到他老人家的鼓舞开始的锻炼,虽然他不认识我,呵呵呵),注意中文的符号容易读不出来,比如引号“”和"",看起来一样,其实不同。

        note左边的小横杆是可以折叠的位置,实际上是浏览器对于文档的元素层次关系的理解。官方的说法热如下:

        打开 XML 文件 - XML 文档将显示为代码颜色化的根以及子元素。通过点击元素左侧的加号或减号,可以展开或收起元素的结构。如需查看不带有 + 和 - 符号的源代码,请从浏览器菜单中选择“查看源代码”。

源代码如下(用的是IE11 浏览器Win10系统,下面出来的东西貌似不简单,看到了DOM等等,初学者在这就容易岔开去了解,还是先忍住,飞哥以后学懂了再回来解释,软件白痴的我确实步步艰辛,步步都是坑)

实际上第一行<?xml version="1.0" encoding="ISO-8859-1"?>如果不写,浏览器也可以识别,而且加上一句<?xml version="1.0"?>。如果用的是 Microsoft edge 浏览器,就不会加上这一句,背后到底什么逻辑,我还不懂,以后懂了再和大家聊。

上面的显示虽然有了基本的层次结构,但是显示的真心不漂亮,里子面子我都想要那么就要进入真正的有实用价值的XML显示部分了。

接下来会有几个知识点,每个章节都不短,跳过的话又比较可惜,所以,飞哥和你一块开始啃骨头喽。我们不急,一个一个来哈

  • CSS
  • XSL
  • JavaScript
  • XML 数据岛

4.6.1 CSS 用于 XML的简单显示

这个标题关键在于用于XML的简单显示,为什么不是CSS呢,因为CSS可不是飞哥这个水平可以写的啊,如果之后有时间,我会单独的用一个系列学习和笔记来细细的展示,现在,只是最初始的认识和使用。牢记自己是一个软件白痴,是我目前的座右铭。

CSS的基础知识,我是在参考文献3里学习的,感谢wuyxinu给了一个前端开发的系列笔记,拜读之后,有了基础的概念和了解,如果大家也是小白阶段,推荐去读一下。下面内容大都来自wuyxinu,我只是摘录和整理了部分相关的。

原文链接 https://blog.csdn.net/wuyxinu/article/details/103583618

CSS是什么?CSS,即“Cascading Style Sheet(层叠样式表)”,是用来控制网页的外观的一门技术。HTML、CSS和JavaScript是前端技术中最核心的三个元素。HTML控制网页的结构,CSS控制网页的外观,而JavaScript控制网页的行为。

HTML(注意这里是HTML,不是XML)中引入CSS共有3种方式:

(1)外部样式表; (2)内部样式表; (3)内联样式表;

外部样式表是最理想的CSS引用方式,在实际开发当中,为了提升网站的性能和维护性,一般都是使用外部样式表。所谓的“外部样式表”,就是把CSS代码和HTML代码都单独放在不同文件中,然后在HTML文档中使用link标签来引用CSS样式表。 外部样式表在单独文件中定义,并且在标签对中使用link标签来引用。CSS 用于 XML的简单显示,在参考文献1里,也是使用外部样式表的方式。使用 CSS 格式化 XML 不是常用的方法,更不能代表 XML 文档样式化的未来。W3C 推荐使用 XSLT

<!--XML file-->

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="cd_catalog.css"?>
<CATALOG>
  <CD>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1985</YEAR>
  </CD>
  <CD>
    <TITLE>Hide your heart</TITLE>
    <ARTIST>Bonnie Tyler</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>CBS Records</COMPANY>
    <PRICE>9.90</PRICE>
    <YEAR>1988</YEAR>
  </CD>
</CATALOG>

<!--cd_catalog.css-->

CATALOG
{
background-color: #ffffff;
width: 100%;
}
CD
{
display: block;
margin-bottom: 30pt;
margin-left: 0;
}
TITLE
{
color: #FF0000;
font-size: 20pt;
}
ARTIST
{
color: #0000FF;
font-size: 20pt;
}
COUNTRY,PRICE,YEAR,COMPANY
{
display: block;
color: #000000;
margin-left: 20pt;
}

最后显示的样式

CSS文件的写法一看就懂,但是如果深究其实是一种选择器写法,用到了下面加粗的两种,这些选择器是对应HTML的,对于XML是不是都适用,飞哥不懂,以后懂了再说

  • 元素选择器
  • id选择器
  • class选择器
  • 子元素选择器
  • 相邻选择器
  • 群组选择器

4.6.2 使用 XSLT 显示 XML

XSLT 是首选的 XML 样式表语言指扩展样式表语言(EXtensible Stylesheet Language)。 

XSLT 指 XSL 转换。万维网联盟开始发展 XSL 的起因是由于对基于 XML 的样式表语言的需求。

我们先考虑一下CSS和HTML的关系,可以比较好的类比XSL和XML的关系

CSS = HTML 样式表

  • HTML 使用预先定义的标签,标签的意义很容易被理解
  • HTML 元素中的 <table> 元素定义表格 - 并且浏览器清楚如何显示它
  • 向 HTML 元素添加样式是很容易的。通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。

XSL = XML 样式表

  • XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且这些标签的意义并不都那么容易被理解。
  • <table> 元素意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏览器不清楚如何显示它。
  • XSL 可描述如何来显示 XML 文档

注意一下: XSL - 不仅仅是样式表语言,XSL 包括三部分,我们只关注XSLT

  • XSLT一种用于转换 XML 文档的语言。
  • XPath一种用于在 XML 文档中导航的语言。
  • XSL-FO一种用于格式化 XML 文档的语言。

XSLT 用于将一种 XML 文档转换为另外一种 XML 文档,或者可被浏览器识别的其他类型的文档,比如 HTML 和 XHTML。通常,XSLT 是通过把每个 XML 元素转换为 (X)HTML 元素来完成这项工作的。

通过 XSLT,可以向或者从输出文件添加或移除元素和属性。也可重新排列元素,执行测试并决定隐藏或显示哪个元素。XSLT 把 XML 源树转换为 XML 结果树。

XSLT 使用 XPath 在 XML 文档中查找信息。XPath 被用来通过元素和属性在 XML 文档中进行导航。在转换过程中,XSLT 使用 XPath 来定义源文档中可匹配一个或多个预定义模板的部分。一旦匹配被找到,XSLT 就会把源文档的匹配部分转换为结果文档。

XPath:XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。因此,对 XPath 的理解是很多高级 XML 应用的基础。(可以理解XPath像在XML这个仓库里跑的叉车,找到对应的元素和属性后,打好相应的包装,编程的有不同形式(包裹样式)的HTML),关于XPath,之后飞哥会专门仔细学习并更新到笔记中或另外开篇。

下面假定我们都学会了XPath的(这种大无畏的精神是无奈之举,不这样,我无法在学习中找到路径),要用XLT把XML文件转换成XHTML

步骤如下

步骤1.把文档声明为 XSL 样式表 (使用<xsl:stylesheet> 或 <xsl:transform>)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

或者

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 指向了官方的 W3C XSLT 命名空间。使用此命名空间,必须包含属性 version="1.0"。

步骤2.创建 XSL 样式表 (下面是一个参考文档1的示例程序,我们直接用来学习)

  • XSL样式表本身就是一个XML的文档,所以有第一行的内容
<?xml version="1.0" encoding="ISO-8859-1"?>
  • 下一个元素,<xsl:stylesheet>,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  • <xsl:template> 元素用于构建模板。

        match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。

剩下的<html> </html>之间就是HTML的文档内容了,其中是画了一个表格,把内容填进去。具体的table,h2,tr,th等等,是HTML的内容,如果看不懂,就去看一下参考文章1网站里的HTML基础,很容易就懂了。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html>
 <body>
   <h2>My CD Collection</h2>
   <table border="1">
     <tr bgcolor="#9acd32">
       <th>Title</th>
       <th>Artist</th>
     </tr>
     <tr>
      <td><xsl:value-of select="catalog/cd/title"/></td>
      <td><xsl:value-of select="catalog/cd/artist"/></td>
     </tr>
   </table>
 </body>
 </html>
</xsl:template>

</xsl:stylesheet>

重点是下面两句用于提取某个选定节点的值,并把值添加到转换的输出流

<td><xsl:value-of select="catalog/cd/title"/></td>
<td><xsl:value-of select="catalog/cd/artist"/></td>

步骤3.把 XSL 样式表链接到 XML 文档

XSLT有一些常用的元素

  • <xsl:template> 元素用于构建模板。

  • <xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中

  • <xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素

  • <xsl:if> 元素 如需放置针对 XML 文件内容的条件测试,请向 XSL 文档添加 <xsl:if> 元素

  • <xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试

  • <xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点

XSLT 函数

XSLT 含有超过 100 个内建的函数。这些函数用于字符串值、数值、日期和时间比较、节点和 QName 操作、序列操作、逻辑值,等等。XSLT 函数的命名空间的 URI 是:http://www.w3.org/2005/02/xpath-functions

关于XSL和扩展问题,飞哥目前没有能力全部学习,留待下次做一个专题的学习和分享。

未完待续 到 XML 零基础学习笔记 03 

<!--今天没什么特别要说的-->

【我是飞哥,陪你飞是我的快乐!】2021.07.02

标签:XML,02,XSLT,元素,笔记,HTML,文档,样式表
来源: https://blog.csdn.net/m0_59489202/article/details/118404911

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有