XLST学习笔记

一、样式表声明及引用:

 

声明:

 

<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">

 

 

 

引用:

 

在xml文件里面写出样式表的路径和文件名

 

<?xml-stylesheet type="text/xsl" href="filename.xsl"?>

 

 

 

二、标签

 

1.<xsl:template math="/"></xsl:template>

 

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

 

 


2.<xsl:value-of select="[xpath expression]" />

 

提取某个选定节点的值,并把值添加到转换的输出流中。[xpath expression]表示提取节点的xpath路径

 

 

 

3.<xsl:for-each select="[xpath expression]"></xsl:for-each>

 

用于选取指定的节点集中的每个 xml 元素

 

注:select可以使用设置过滤条件来进行查询:

 

&gt; 大于

&lt;  小于

=     等于

!=    不等于

例如:<xsl:for-each select="catalog/cd[price &gt; 10]">...</xsl:for-each>

 

还可以使用xpath的模糊查询:

 

例如:


<xsl:for-each select="catalog/cd[contains(author='bob.dylan')]">...</xsl:for-each>

 

假如是属性内容,则用这样的表达式:

 

<xsl:for-each select="catalog/cd[contains(@author='bob.dylan')]">...</xsl:for-each>

 

 

 

3.1 <xsl:sort select="[xpath expression]" />

 

排序。对结果进行排序,只要简单地在 xsl 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素就可以了。

 

 


3.2 <xsl:if test="expression"></xsl:if>

 

在<xsl:for-each>内部添加,实现判定功能,test为条件表达式:

 

<xsl:for-each select="catalog/cd">

 

  <xsl:if test="price &lt; 20">...</xsl:if>

 

</xsl:for-each>

 

 

 

3.3 <xsl:choose>

 

包含在foreach循环中,多重条件判定语句。

 

格式如下:

 

<xsl:for-each select="catalog/cd">


  <xsl:choose>

 

    <xsl:when test="expression1">


      .....


    </xsl:when>


    <xsl:when test="expression2">


      .....


    </xsl:when>


    <xsl:otherwise>


      .....


    </xsl:otherwise>

 

   </choose>

 

</xsl:for-each>

 

 

 

4.<xsl:apply-templates /> 

 

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

 

例如:

 

<html>


<body>


<h2>my cd list</h2>


<xsl:apply-templates />


</body>


</html>

 

 

 

<xsl:template match="cd">

<p>

<xsl:apply-templates select="title"/> 

<xsl:apply-templates select="artist"/>

</p>

</xsl:template>

 

<xsl:template match="title">

title: <span style="color:#ff0000">

<xsl:value-of select="."/></span>

<br />

</xsl:template>


<xsl:template match="artist">

artist: <span style="color:#00ff00">

<xsl:value-of select="."/></span>

<br />

</xsl:template>

 

要将XML转换为文本,通常可以使用XSLT(Extensible Stylesheet Language Transformations)来实现。下面是一个简单的XSLT示例,将XML转换为文本格式: ```xml <!-- input.xml --> <?xml version="1.0" encoding="UTF-8"?> <root> <element>ABC</element> <element>123</element> </root> ``` ```xslt <!-- transform.xsl --> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" indent="no"/> <xsl:template match="/"> <xsl:for-each select="//element"> <xsl:value-of select="."/> <xsl:text> </xsl:text> <!-- 换行符 --> </xsl:for-each> </xsl:template> </xsl:stylesheet> ``` 使用以上的XSLT样式表,可以将XML文件中的`<element>`元素的文本提取出来并以文本格式输出。下面是一个使用Java语言的示例代码,演示如何使用Java中的Transformer类执行XSLT转换: ```java import javax.xml.transform.*; import javax.xml.transform.stream.*; public class XmlToTextConverter { public static void main(String[] args) throws Exception { // 加载XSLT样式表 Source xslt = new StreamSource(new java.io.File("transform.xsl")); // 创建Transformer对象 Transformer transformer = TransformerFactory.newInstance().newTransformer(xslt); // 加载XML文件 Source xml = new StreamSource(new java.io.File("input.xml")); // 执行转换并输出结果 transformer.transform(xml, new StreamResult(new java.io.File("output.txt"))); } } ``` 执行上述代码后,将生成一个名为`output.txt`的文件,其中包含以下文本内容: ``` ABC 123 ``` 这样就完成了将XML转换为文本的过程。你可以根据实际需求自定义XSLT样式表来实现更复杂的转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值