You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XSLT获取子节点issue的值?附相关XML与XSL文件

使用XSLT获取子节点值的解决方案

嘿,我来帮你搞定这个问题!先把你提供的文件整理出来,然后一步步教你怎么实现:

你的XML文件内容

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <q>sdfsdf</q>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
</catalog>

你提供的XSL#1(未完整版本)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1....

小提醒:

我注意到你提到要获取issue子节点的值,但你当前的XML里并没有这个节点哦~可能是笔误?不过没关系,我会给你通用的实现方法,你可以根据实际的节点名称和层级调整。


完整的XSLT实现示例

下面是一个完整的XSLT文件,演示如何获取指定子节点的文本值,你可以直接参考修改:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 声明XSLT版本和命名空间,这是必须的 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- 匹配XML的根节点/catalog -->
  <xsl:template match="/catalog">
    <html>
      <body>
        <!-- 获取<q>节点的文本值 -->
        <p>q节点的值:<xsl:value-of select="q"/></p>
        
        <!-- 获取<cd>下<title>节点的值 -->
        <p>专辑标题:<xsl:value-of select="cd/title"/></p>
        
        <!-- 假设你的XML里存在<issue>节点,这样获取它的值 -->
        <p>issue节点的值:<xsl:value-of select="issue"/></p>
        <!-- 如果<issue>在<cd>下面,就写成:<xsl:value-of select="cd/issue"/> -->
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

关键知识点解析

  • 命名空间必须正确:xmlns:xsl="http://www.w3.org/1999/XSL/Transform"是XSLT 1.0的标准命名空间,不能少
  • 使用<xsl:value-of>获取值:select属性里写的是XPath路径,用来定位目标节点:
    • 直接写节点名(比如q)表示当前匹配节点下的子节点
    • 用/分隔层级(比如cd/title)表示层级嵌套的节点
  • 如果有多个同类型节点:比如如果有多个<cd>节点,你可以用<xsl:for-each>循环遍历,然后逐个获取子节点的值

怎么运行这个转换?

你可以用这些方式执行XSLT转换:

  • 浏览器方式:在你的XML文件开头加上这句声明:<?xml-stylesheet type="text/xsl" href="你的XSL文件名.xsl"?>,然后用浏览器打开XML文件就能看到转换后的结果
  • 命令行工具:比如用xsltproc(Linux/macOS),命令是:xsltproc 你的XSL文件名.xsl 你的XML文件名.xml > 输出结果.html
  • 编程语言:比如Python的lxml库、Java的XML转换API都能实现批量或程序化的转换

内容的提问来源于stack exchange,提问作者Igor G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:25:55