如何使用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
相关产品推荐
相关产品推荐

