只使用XSLT,我可以创造一个办法 搜索该目录?
是的。
我可以创建一个方法来搜索一个 人用起 与“飘”的姓氏?
是的。实际上,下面的转换允许搜索以2,3,4或5个字符开头的文本。可以概括为允许搜索起始字符串达到任何预定义的最大长度。
1.我可以将参数传递给XSLT吗?
是。如何做到这一点的细节取决于所使用的特定XSLT处理器。例如here是如何将外部参数传递给.NET XslCompiledTransform.Transform()
2.可我搜索了XML树以匹配参数字符串?
是的。这种转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pPattern" select="'Pur'"/>
<xsl:key name="kPersonByLNameStart"
match="person" use="substring(lname,1,2)"/>
<xsl:key name="kPersonByLNameStart"
match="person" use="substring(lname,1,3)"/>
<xsl:key name="kPersonByLNameStart"
match="person" use="substring(lname,1,4)"/>
<xsl:key name="kPersonByLNameStart"
match="person" use="substring(lname,1,5)"/>
<xsl:template match="/">
<results>
<xsl:copy-of select=
"key('kPersonByLNameStart', $pPattern)"/>
</results>
</xsl:template>
</xsl:stylesheet>
当此XML文档上施加(提供的XML文档 - 校正为良好的形成和扩展):
<directory>
<person>
<fname>Ryan</fname>
<lname>Purple</lname>
<phone>887 778 5544</phone>
</person>
<person>
<fname>Tanya</fname>
<lname>Orange</lname>
<phone>887 998 5541</phone>
</person>
<person>
<fname>Martin</fname>
<lname>Purr</lname>
<phone>887 778 5544</phone>
</person>
</directory>
产生想要的,正确的结果并以最有效的方式:
<results>
<person>
<fname>Ryan</fname>
<lname>Purple</lname>
<phone>887 778 5544</phone>
</person>
<person>
<fname>Martin</fname>
<lname>Purr</lname>
<phone>887 778 5544</phone>
</person>
</results>
请注意:
此代码显示了具有长度为2或3或4或5
技术上的一些前缀如何高效地搜索文本,你可以,问题是你如何去执行XSLT前提是您的Web系统是静态html,并且我认为您的XML文件不会被每个客户端下载,或者它是?如果是这样,你可以在客户端使用XSLT,但这不是一个有效的方法。 – 2011-01-14 00:29:56