2010-05-19 47 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