在XSLT中匹配具有名称空间前缀的元素
这是我的xml输入在XSLT中匹配具有名称空间前缀的元素,xslt,xslt-1.0,Xslt,Xslt 1.0,这是我的xml输入 <package version="2.0" unique-identifier="uuid_id" xmlns="http://www.idpf.org/2007/opf"> <metadata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:opf="http://www.idpf.org/2007/opf" xm
<package version="2.0" unique-identifier="uuid_id"
xmlns="http://www.idpf.org/2007/opf">
<metadata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:opf="http://www.idpf.org/2007/opf"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:calibre="http://calibre.kovidgoyal.net/2009/metadata"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<meta name="calibre:series_index" content="1"/>
<dc:language>UND</dc:language>
<dc:creator opf:file-as="Marquez, Gabriel Garcia"
opf:role="aut"
>Gabriel Garcia Marquez</dc:creator>
<meta name="calibre:timestamp" content="2010-07-14T21:35:15.266000+00:00"/>
<dc:title>Cem Anos de Solidão</dc:title>
<meta name="cover" content="cover"/>
<dc:date>2010-07-14T21:35:15.266000+00:00</dc:date>
<dc:contributor opf:role="bkp"
>calibre (0.7.4) [http://calibre-ebook.com]</dc:contributor>
<dc:identifier id="uuid_id" opf:scheme="uuid"
>7e11dc8b-55cb-4411-8f30-df974fbcf58a</dc:identifier>
</metadata>
<manifest>
</package>
UND
马奎斯
塞姆·阿诺斯·德索里昂
2010-07-14T21:35:15.266000+00:00
口径(0.7.4)[http://calibre-ebook.com]
7e11dc8b-55cb-4411-8f30-df974fbcf58a
我的xslt开始时像
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xsl:template match="package">
<xsl:message>Entering package</xsl:message>
</xsl:template>
进包
我使用的是XSLT 1.0
,模板包不匹配。当我删除名称空间xmlns=”时http://www.idpf.org/2007/opf“
在包节点中,模板匹配。如何在不删除名称空间的情况下使模板匹配
请帮帮我。提前感谢。在样式表中添加名称空间
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:opf="http://www.idpf.org/2007/opf">
<xsl:template match="opf:package">
<xsl:message>Entering package</xsl:message>
</xsl:template>
进包
XSLT理解输入XML中定义的名称空间QNames
除了上述答案之外,我们还可以为xsl名称空间指定任何名称
输入xml的定义为xmlns:dc=”http://purl.org/dc/elements/1.1/"
元素定义为dc前缀
您可以在下面定义样式表:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:purl="http://purl.org/dc/elements/1.1/"
xmlns:idpf="http://www.idpf.org/2007/opf">
<xsl:template match="idpf:package/purl:language">
<xsl:message>Entering package. Selected Language.</xsl:message>
</xsl:template>
进入包裹。选定的语言。
尝试忽略名称空间:
<xsl:template match="*[local-name()='package']">
<xsl:message>Entering package</xsl:message>
</xsl:template>
进包
可能的重复是唯一的方法吗?您是否必须在匹配本身中对“xxx:”前缀进行“硬编码”,或者是否有另一个选项来“全局”定义只覆盖特定名称空间的模板?这是谷歌搜索如何忽略名称空间的好方法,谢谢。这就是我要找的。