2010-05-19 45 views
0
要使用XSLT为XML

我有以下XSLT表:试图在ASP.NET

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:variable name="nhits" select="Answer[@nhits]"></xsl:variable> 
    <xsl:output method="html" indent="yes"/> 
    <xsl:template match="/"> 
    <div> 
     <xsl:call-template name="resultsnumbertemplate"/> 
    </div> 
    </xsl:template> 
    <xsl:template name="resultsnumbertemplate"> 
    <xsl:value-of select="$nhits"/> matches found 
    </xsl:template> 
</xsl:stylesheet> 

这是我尝试与以前的XSLT来混合XML:

<Answer xmlns="exa:com.exalead.search.v10" context="n%3Dsl-ocu%26q%3Dlavadoras" last="9" estimated="false" nmatches="219" nslices="0" nhits="219" start="0"> 
    <time> 
    <Time interrupted="false" overall="32348" parse="0" spell="0" exec="1241" synthesis="15302" cats="14061" kwds="14061"> 
     <sliceTimes>15272 </sliceTimes> 
    </Time> 
    </time>  
</Answer> 

林使用xslcompiledtransform和工作的罚款:

XslCompiledTransform transformer = new XslCompiledTransform(); 

transformer.Load(HttpContext.Current.Server.MapPath("xslt\\" + requestvariables["xslsheet"].ToString())); 

transformer.Transform(xmlreader, null, writer); 

我的问题来当我尝试放入变量“nhits” attribut e值放置在Answer元素上,但我没有使用我的xslt表单渲染任何东西。

你知道可能是什么原因吗?

可能是我的xml文件中的xmlns属性?

在此先感谢。

最好的问候。

Jose

回答

1

您的直接问题是您的XPath错误。尝试

<xsl:variable name="nhits" select="/Answer/@nhits" /> 

但是,我建议一个变化,完全摆脱变量,你不需要它。

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> 
    <xsl:output method="html" indent="yes"/> 

    <xsl:template match="Answer"> 
    <div> 
     <xsl:value-of select="@nhits"/> 
     <xsl:text> matches found</xsl:text> 
    </div> 
    </xsl:template> 

</xsl:stylesheet> 
+0

你好托默勒格, 首先感谢您快速响应。 如果我使用您给我的代码(xsl表),浏览器会显示所有元素,而不仅仅是“select的值”和找到的匹配项。 你知道可能是什么原因吗? 非常感谢。 最好的问候。 何塞。 – Sosi 2010-05-19 09:20:06

+0

@Jose:是的。如果只有一个''元素,并且您对XML中的其他内容不感兴趣,请将''更改为'' – Tomalak 2010-05-19 10:12:23

1

你的变量应该是select="Answer/@nhits"

"Answer[@nhits]"的尝试当期的XPath来选择具有名为nhits属性Answer元素..

+0

Hello加比,谢谢你的回应。 即时通讯现在的问题是,我可以打印所有,或什么都没有。不是特定的元素或属性。 你知道为什么可能是原因吗? 在此先感谢。 最好的问候。 Jose – Sosi 2010-05-19 10:01:04

+0

您的意思是'Answer [@nhits]',因为'Answer/[@ nhits]'是一个语法错误。 – Tomalak 2010-05-19 10:15:03

+0

@Tomalak,正确..我误解了.. – 2010-05-19 12:08:35