xml – 从XSLT中删除属性并使用结果集
发布时间:2020-12-16 07:51:48 所属栏目:百科 来源:网络整理
导读:是否可以从XSLT中删除xml属性并使用生成的转换? 换句话说,我有以下XML: ?xml version="1.0" encoding="iso-8859-1"??xml-stylesheet type="text/xsl" href="XML_TEST.xslt"?report xmlns="abc123"bookpage id="22"/pagepage id="23"/page/book/report 我知
是否可以从XSLT中删除xml属性并使用生成的转换?
换句话说,我有以下XML: <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="XML_TEST.xslt"?> <report xmlns="abc123"> <book> <page id="22"> </page> <page id="23"> </page> </book> </report> 我知道我可以使用以下XSLT来剥离属性: <xsl:template match ="@*" > <xsl:attribute name ="{local-name()}" > <xsl:value-of select ="." /> </xsl:attribute> <xsl:apply-templates/> </xsl:template> <xsl:template match ="*" > <xsl:element name ="{local-name()}" > <xsl:apply-templates select ="@* | node()" /> </xsl:element> </xsl:template> 但如果我想读取值,请使用以下模板 <xsl:template match="report"> <xsl:for-each select="book/page"> <xsl:value-of select="@id"/> </xsl:for-each> </xsl:template> 我可以将该模板链接到前两个的输出吗? 提前致谢, -R.
是的,只需搜索“多遍转换”,您就会找到很多具有良好代码示例的答案. 但是,对于您想要做的事情,这种转换链接过于复杂且完全没有必要. 只需使用: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:x="abc123" > <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:template match="x:page"> <xsl:value-of select="@id"/> </xsl:template> </xsl:stylesheet> 如果事先不知道XML文档的默认命名空间,您仍然可以在一次传递中生成所需的结果: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:template match="*[name()='page']"> <xsl:value-of select="@id"/> </xsl:template> </xsl:stylesheet> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |