如何使用XSLT提取源文档exhibit节点path属性生成目标XML文档
修正后的XSLT代码
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:opf="http://www.idpf.org/2007/opf" exclude-result-prefixes="xsl"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <package xmlns="http://www.idpf.org/2007/opf" unique-identifier="pub-id" version="3.0"> <manifest> <!-- 遍历所有exhibit节点生成对应item --> <xsl:for-each select="//exhibit"> <item href="{@path}" /> </xsl:for-each> </manifest> </package> </xsl:template> </xsl:stylesheet>
核心调整说明
- 原代码的静态节点(
package、manifest)放在了模板定义外部,不符合XSLT语法规范,调整后全部放在根节点匹配模板内部 - 替换原有的全量复制
chapter节点逻辑,使用xsl:for-each遍历所有exhibit节点 - 使用XSLT属性值模板语法
{@path},直接提取exhibit的path属性值填充到item的href属性中
如果你只需要保留第二个chapter下的exhibit(和你给出的示例输出一致),将select="//exhibit"改为select="//chapter[2]/exhibit"即可跳过第一个chapter下的节点。
内容的提问来源于stack exchange,提问作者pantherfan
相关产品推荐
相关产品推荐

