Heim  >  Artikel  >  Backend-Entwicklung  >  Verrückte XML-Studiennotizen (11) -----------XSLT-Erklärung

Verrückte XML-Studiennotizen (11) -----------XSLT-Erklärung

黄舟
黄舟Original
2017-02-21 14:44:501380Durchsuche


Die Grundkenntnisse von XML wurden bereits geklärt. Wenn Sie interessiert sind, können Sie die folgende URL besuchen

http://www.php.cn/

Es liegt ein Fehler im Bild- und Textanzeigeteil vor des Artikels, und es kann nicht angezeigt werden, bitte haben Sie Verständnis!

Wenn Sie es ausprobieren möchten, können Sie das w3cshool-API-Dokument herunterladen

Verbinden Sie sich mit http://www.php.cn / zum Herunterladen

XSLT Es beginnt mit XSL und endet mit XSLT, XPath und XSL-FO.

XPath wird später ausführlich erklärt

Beginnen Sie mit XSL

XSL bezieht sich auf die Extensible Stylesheet Language (EXtensible SStylesheet LSprache).

Das World Wide Web Consortium (W3C) begann mit der Entwicklung von XSL, weil Bedarf an einer XML-basierten Stylesheet-Sprache bestand.

CSS = HTML-Stylesheet

HTML verwendet vordefinierte Tags und die Bedeutung der Tags ist leicht zu verstehen . Das f5d188ed2c074f8b944552db028f98a1-Element im

HTML-Element definiert eine Tabelle – und der Browser weiß, wie er sie anzeigt.

Das Hinzufügen von Stilen zu HTML-Elementen ist einfach. Mit CSS ist es einfach, den Browser anzuweisen, ein Element mit einer bestimmten Schriftart oder Farbe anzuzeigen.

XSL = XML-Stylesheet

XML verwendet keine vordefinierten Tags (wir können jeden beliebigen Tag-Namen verwenden) und diese Tags Die Bedeutungist nicht immer leicht zu verstehen. Das Element

f5d188ed2c074f8b944552db028f98a1 bedeutet eine HTML-Tabelle, ein Möbelstück oder etwas anderes – der Browser hat keine Ahnung, wie er es anzeigen soll .

XSL kann beschreiben, wie XML-Dokumente angezeigt werden!

XSL – Mehr als nur eine Stylesheet-Sprache

XSL besteht aus drei Teilen:

  • XSLT

  • Eine Sprache zum Transformieren von XML-Dokumenten.

  • XPath

  • Eine Sprache zum Navigieren in XML-Dokumenten.

  • XSL-FO

  • Eine Sprache zur Formatierung von XML-Dokumenten.


XSLT ist eine Methode zum Konvertieren von XML-Dokumenten in XHTML-Dokumente oder andere XML-Dokumentsprachen .

XPath ist eine Sprache zur Navigation in XML-Dokumenten.

Grundkenntnisse, die Sie vor dem Studium haben müssen:

Bevor Sie mit dem Studium fortfahren, müssen Sie ein grundlegendes Verständnis davon haben Folgende Kenntnisse Erfahren Sie mehr über:

  • HTML/XHTML

  • XML/XML-Namespaces

Wenn Sie zuerst mehr über diese Projekte erfahren möchten, schauen Sie sich bitte unsere an Startseite, um auf diese Tutorials zuzugreifen.

Was ist XSLT?

  • XSLT bezieht sich auf XSL-Transformationen.

  • XSLT ist der wichtigste Teil von XSL.

  • XSLT kann ein XML-Dokument in ein anderes umwandeln.

  • XSLT verwendet XPath, um innerhalb von XML-Dokumenten zu navigieren.

  • XPath ist ein W3C-Standard.

XSLT = XSL-Transformation

XSLT ist der wichtigste Teil von XSL.

XSLT wird verwendet, um ein XML-Dokument in ein anderes XML-Dokument oder andere Dokumenttypen zu konvertieren, die von Browsern erkannt werden können, wie z. B. HTML und XHTML. Normalerweise erreicht XSLT dies durch die Konvertierung jedes XML-Elements in ein (X)HTML-Element.

Mit XSLT können Sie Elemente und Attribute zur Ausgabedatei hinzufügen oder daraus entfernen. Sie können außerdem Elemente neu anordnen, Tests durchführen und entscheiden, welche Elemente ausgeblendet oder angezeigt werden sollen, und vieles mehr.

Eine übliche Art, den Transformationsprozess zu beschreiben, ist, dass

XSLT einen XML-Quellbaum in einen XML-Ergebnisbaum umwandelt.

XSLT verwendet XPath

XSLT verwendet XPath, um Informationen in einem XML-Dokument zu finden. XPath wird verwendet, um innerhalb von XML-Dokumenten durch Elemente und Attribute zu navigieren.

Wenn Sie zuerst XPath lernen möchten, besuchen Sie bitte unsere XPath-Tutorial.

Wie funktioniert es?

Während des Transformationsprozesses verwendet XSLT XPath, um Teile des Quelldokuments zu definieren, die einer oder mehreren vordefinierten Vorlagen entsprechen. Sobald eine Übereinstimmung gefunden wird, wandelt XSLT den übereinstimmenden Teil des Quelldokuments in das Ergebnisdokument um.

Korrekte Stylesheet-Deklaration

Deklarieren Sie das Dokument als XSL. Das Stammelement des Stylesheets ist 7d542c33e787a74f31675890febd8f39 oder 531584125f9072736f72fc92cb1ce734.

Hinweis: 8bfba33610b8df90976a82ef1f8b7575 sind völlig synonym und können verwendet werden!

Gemäß dem XSLT-Standard des W3C lautet die korrekte Art und Weise, ein XSL-Stylesheet zu deklarieren:

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

oder:

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

Um auf XSLT-Elemente, -Attribute und -Merkmale zuzugreifen, müssen wir den XSLT-Namespace oben im Dokument deklarieren.

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

从一个原始的 XML 文档开始

我们现在要把下面这个 XML 文档("cdcatalog.xml")转换为 XHTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
.
</catalog>

在 Internet Explorer 和 Firefox 中查看 XML 文件:

打开 XML 文件(通常通过点击某个链接) - XML 文档会以颜色化的代码方式来显示根元素及子元素。点击元素左侧的加号或减号可展开或收缩元素的结构。如需查看原始的XML源文件(不带有加号和减号),请在浏览器菜单中选择“查看页面源代码”。

在 Netscape 6 中查看 XML 文件:

打开 XML 文件,然后在 XML 文件中右击,并选择“查看页面源代码”。XML文档会以颜色化的代码方式来显示根元素及子元素。

在 Opera 7 中查看 XML 文件:

打开 XML 文件,然后在XML文件中右击,选择“框架”/“查看源代码”。XML文档将显示为纯文本。

 

创建 XSL 样式表

然后创建一个带有转换模板的 XSL 样式表("cdcatalog.xsl"):

<?xml version="1.0" encoding="ISO-8859-1"?>

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


  
  
    

My CD Collection

Title Artist

 

把 XSL 样式表链接到 XML 文档

向 XML 文档("cdcatalog.xml")添加 XSL 样式表引用:

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?><catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
.
</catalog>

 

 

2032d1f3e843089f381a035edc734156 元素

2032d1f3e843089f381a035edc734156 元素用于构建模板。

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

好了,让我们看一下上一节中的 XSL 文件的简化版本:

<?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>.</td>
       <td>.</td>
     </tr>
   </table>
 </body>
 </html>
</xsl:template>

</xsl:stylesheet>

代码解释:

由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始:

<?xml version="1.0" encoding="ISO-8859-1"?>

下一个元素,8bfba33610b8df90976a82ef1f8b7575,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。

2032d1f3e843089f381a035edc734156 元素定义了一个模板。而 match="/" 属性则把此模板与 XML 源文档的根相联系。

2032d1f3e843089f381a035edc734156 元素内部的内容定义了写到输出结果的 HTML 代码。

最后两行定义了模板的结尾,及样式表的结尾。

以上转换的结果类似这样:

 

 

02b2fbed6ee2fe75988418f1eace8181 元素

02b2fbed6ee2fe75988418f1eace8181 元素用于提取某个选定节点的值,并把值添加到转换的输出流中:

<?xml version="1.0" encoding="ISO-8859-1"?>



 
 
   

My CD Collection

Title Artist

注释:select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。

上面的转换结果类似这样:

 

 

 


431e46b64b4819f2ac967516fbb4b43f 元素

431e46b64b4819f2ac967516fbb4b43f 元素可用于选取指定的节点集中的每个 XML 元素。

<?xml version="1.0" encoding="ISO-8859-1"?>



  
  
    

My CD Collection

Title Artist

注释:select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。

上面的转换结果类似这样:

 

结果过滤

通过在 431e46b64b4819f2ac967516fbb4b43f 元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。

<xsl:for-each select="catalog/cd[artist=&#39;Bob Dylan&#39;]">

合法的过滤运算符:

  • =  (等于)

  • != (不等于)

  • < (小于)

  • > (大于)

<?xml version="1.0" encoding="ISO-8859-1"?>



 
  
  

My CD Collection

<xsl:for-each select="catalog/cd[artist=&#39;Bob Dylan&#39;]">
Title Artist

上面的转换结果类似这样:

 


f3a7eb5c7af94a622c8698ad8c159369 元素用于对结果进行排序。

在何处放置排序信息

如需对结果进行排序,只要简单地在 XSL 文件中的 431e46b64b4819f2ac967516fbb4b43f 元素内部添加一个 f3a7eb5c7af94a622c8698ad8c159369 元素:

<?xml version="1.0" encoding="ISO-8859-1"?>



  
  
    

My CD Collection

Title Artist

注释:select 属性指示需要排序的 XML 元素。

上面的转换结果类似这样:

 

 

 

 


28d7e7bce771845b11cc99f4b371fb36 元素

如需放置针对 XML 文件内容的条件测试,请向 XSL 文档添加 28d7e7bce771845b11cc99f4b371fb36 元素。

语法

<xsl:if test="expression">
  ...
  ...如果条件成立则输出...
  ...
</xsl:if>

在何处放置 28d7e7bce771845b11cc99f4b371fb36 元素

如需添加有条件的测试,请在 XSL 文件中的 431e46b64b4819f2ac967516fbb4b43f 元素内部添加 28d7e7bce771845b11cc99f4b371fb36 元素:

<?xml version="1.0" encoding="ISO-8859-1"?>


  
  
    

My CD Collection

Title Artist

注释:必选的 test 属性的值包含了需要求值的表达式。

上面的代码仅仅会输出价格高于 10 的 CD 的 title 和 artist 元素。

上面的转换结果类似这样:

 

 

 

 

 


3e08d16b69ca6dceb52122b5e3e896ec 元素

语法

<xsl:choose>
  <xsl:when test="expression">
    ... 输出 ...
  </xsl:when>
  <xsl:otherwise>
    ... 输出 ....
  </xsl:otherwise>
</xsl:choose>

在何处放置选择条件

要插入针对 XML 文件的多重条件测试,请向 XSL 文件添加 3e08d16b69ca6dceb52122b5e3e896ec、1aab2a36c3da35537dba594d8b9f335a 以及 b490e3a477a758f8d417150b585fd42a:

<?xml version="1.0" encoding="ISO-8859-1"?>



  
  
    

My CD Collection

Title Artist

上面的代码会在 CD 的价格高于 10 时向 "Artist" 列添加粉色的背景颜色。

上面的转换结果类似这样:

查看此 XML 文件,查看此 XSL 文件,查看结果。

另一个例子

这是另外一个包含两个 1aab2a36c3da35537dba594d8b9f335a 元素的例子:

<?xml version="1.0" encoding="ISO-8859-1"?>



  
  
    

My CD Collection

Title Artist

上面的代码会在 CD 的价格高于 10 时向 "Artist" 列添加粉色的背景颜色,并在 CD 的价格高于 9 且低于等于 10 时向 "Artist" 列添加灰色的背景颜色。

上面的转换结果类似这样:

 

 

 


58ff327a04da27df4a7ce66c0ce40bdf 元素

58ff327a04da27df4a7ce66c0ce40bdf 元素可把一个模板应用于当前的元素或者当前元素的子节点。

假如我们向 58ff327a04da27df4a7ce66c0ce40bdf 元素添加一个 select 属性,此元素就会仅仅处理与属性值匹配的子元素。我们可以使用 select 属性来规定子节点被处理的顺序。

请看下面的 XSL 样式表:

<?xml version="1.0" encoding="ISO-8859-1"?>





My CD Collection

Title:
Artist:

 

XSLT 元素

如果您需要有关下列元素的更详细的信息,请点击元素列中的链接。

  • N: 表示最早支持此标签的 Netscape 版本

  • IE: 表示最早支持此标签的 Internet Explorer 版本

注释:在 IE 5 中所支持的元素可能出现非标准的行为,这是由于 IE 5 发布于 XSLT 被确立为正式的 W3C 标准之前。

元素 描述 IE N
apply-imports 应用来自导入样式表中的模版规则。 6.0  
apply-templates 向当前元素或当前元素的子元素应用模板。 5.0 6.0
attribute 向元素添加属性。 5.0 6.0
attribute-set 创建命名的属性集。 6.0 6.0
call-template 调用一个指定的模板。 6.0 6.0
choose 与bb41c5e2afa2e51b56cbbc78bba5590f以及08840e2c213e7be6cb36177580c1b0f8协同使用,来表达多重条件测试。 5.0 6.0
comment 在结果树中创建注释节点。 5.0 6.0
copy 创建当前节点的一个备份(无子节点及属性)。 5.0 6.0
copy-of 创建当前节点的一个备份(带有子节点及属性)。 6.0 6.0
decimal-format 定义当通过 format-number() 函数把数字转换为字符串时,所要使用的字符和符号。 6.0  
element 在输出文档中创建一个元素节点。 5.0 6.0
fallback 假如处理器不支持某个XSLT元素,规定一段备用代码来运行。 6.0  
for-each 遍历指定的节点集中的每个节点。 5.0 6.0
if 包含一个模板,仅当某个指定的条件成立时应用此模板。 5.0 6.0
import 用于把一个样式表中的内容倒入另一个样式表中。 6.0 6.0
include 把一个样式表中的内容包含到另一个样式表中。 6.0 6.0
key 声明一个命名的键。 6.0 6.0
message 向输出写一条消息(用于错误报告)。 6.0 6.0
namespace-alias 把样式表中的命名空间替换为输出中不同的命名空间。 6.0  
number 测定当前节点的整数位置,并对数字进行格式化。 6.0 6.0
otherwise 规定 c88e008ca37f641f1d68866f53b5c0de 元素的默认动作。 5.0 6.0
output 定义输出文档的格式。 6.0 6.0
param 声明一个局部或全局参数。 6.0 6.0
preserve-space 用于定义保留空白的元素。 6.0 6.0
processing-instruction 生成处理指令节点。 5.0 6.0
sort 对结果进行排序。 6.0 6.0
strip-space 定义应当删除空白字符的元素。 6.0 6.0
stylesheet 定义样式表的根元素。 5.0 6.0
template 当指定的节点被匹配时所应用的规则。 5.0 6.0
text 通过样式表生成文本节点。 5.0 6.0
transform 定义样式表的根元素。 6.0 6.0
value-of 提取选定节点的值。 5.0 6.0
variable 声明局部或者全局的变量。 6.0 6.0
when 规定 c88e008ca37f641f1d68866f53b5c0de 元素的动作。 5.0 6.0
with-param 规定需被传入某个模板的参数的值。 6.0 6.0

Das Obige ist der Inhalt von Crazy XML Study Notes (11)-----------XSLT Für weitere verwandte Inhalte achten Sie bitte auf PHP-Chinesisch Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn