我有以下xslt表:
<?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);
我的问题出现在我试图将一个变量放入Answer元素上的“nhits”属性值时,但我没有使用我的xslt表格渲染任何东西。
你知道原因是什么吗?
可能是我的xml文件中的xmlns属性吗?
提前致谢。
最诚挚的问候。
何
答案 0 :(得分: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>
答案 1 :(得分:1)
您的变量应为select="Answer/@nhits"
"Answer[@nhits]"
的当前xpath尝试选择具有名为Answer
的属性的nhits
元素。