当XML中有一个xmlns时,我的XSLT需要做什么?
问题描述:
对于以下XML当XML中有一个xmlns时,我的XSLT需要做什么?
<Properties ComponentID="1272040480745" Admin="true">
<Datum ID="P01" Type="File" Name="CSS To Use">style.css</Datum>
<Data>
<External></External>
<Result>
<results xmlns="http://www.interwoven.com/schema/iwrr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interwoven.com/schema/iwrr iwrr.xsd" total="1" included="1" start="0" status="200">
<assets>
<document id="019c7c763e5ae286c7d566ff883f8199" uri="/document/id/019c7c763e5ae286c7d566ff883f8199" context="cb478aef64c6415b390e241885fd1346" path="templatedata/www/location/data/Belton">
<metadata>
<field name="TeamSite/Metadata/locationRegion">
Central
</field>
</metadata>
</document>
</assets>
</results>
</Result>
</Data>
我将如何从文档中选择元素的路径属性?我现在的XSLT是:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<div>
<xsl:apply-templates select="Properties/Data/Result/results/assets/document"></xsl:apply-templates>
<xsl:text>HELLO THERE!</xsl:text>
</div>
</xsl:template>
<xsl:template match="document">
<xsl:value-of select="@path"></xsl:value-of>
</xsl:template>
</xsl:stylesheet>
如果我删除的xmlns,XMLNS:XSI和XSI:从XML结果元素的schemaLocation的XSLT会工作。所以显然我不明白命名空间的东西,并会非常感谢一些见解。由于
答
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:iwwr="http://www.interwoven.com/schema/iwrr"
>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:value-of select="/*/*/*/iwwr:results/*/iwwr:document/@path"/>
</xsl:template>
</xsl:stylesheet>
当应用于提供的XML文档,产生的价值path
属性根据需要:
templatedata/www/location/data/Belton
答
您必须将命名空间添加到您的XPath,也:
<xsl:apply-templates xmlns:iwrr="http://www.interwoven.com/schema/iwrr" select="Properties/Data/Result/iwrr:results/iwr:assets/iwr:document"></xsl:apply-templates>
快速回复感谢 – Mark 2010-06-24 21:29:16
请注意,iwwr是本示例中完整名称空间的别名。 – 2010-06-24 21:48:40
@ Mark-Schultheiss:这是对我的评论,如果是的话,它的含义是什么?名称空间前缀是一个名称空间前缀。根据定义,它被绑定到一个名称空间uri。我的答案演示了如何使用绑定到特定命名空间的命名空间前缀,以便使包含属于该命名空间的元素名称的XPath表达式更具可读性。 – 2010-06-24 22:13:01