Используя только XSLT, я могу создать способ
искать в этом каталоге?
Да.
Могу ли я создать способ поиска
человек с фамилией начинающий
с "Pur"?
Да. Фактически приведенное ниже преобразование позволяет искать текст, начиная с любых 2,3,4 или 5 символов. Его можно обобщить, чтобы разрешить поиск начальной строки вплоть до любой предопределенной максимальной длины.
1.Могу ли я передать параметр в XSLT?
Да . Детали того, как это сделать, зависят от конкретного используемого процессора XSLT. Например, здесь - это способ передачи внешних параметров в .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>
Do Note :
Этот код показывает, как эффективно осуществлять поиск текста, имеющего некоторый префикс длины 2, 3, 4 или 5.