регулярные выражения xslt для сопоставления записей xml и отображения - PullRequest
0 голосов
/ 10 августа 2010

Я знаю, что это так просто для некоторых из вас.

Все, что я хочу сделать, - это просмотреть документ XML и распечатать записи XML, содержащие конкретные фрагменты строк. Строковое значение передается в xslt и просматривается документ xml, и, если слово начинается со строкового выражения, оно отображает его.

Какие у меня ошибки со следующим сообщением ...

MM_XSLTransform error: ошибка при преобразование: 'match ()' является неизвестная функция XSLT.

вот мой пример кода ...

<xsl:stylesheet 
  version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/1999/xhtml">
  <xsl:output method="html" encoding="utf-8"/>
  <xsl:param name="qString" />
  <xsl:template match="/">
    <xsl:for-each select="Products/Product">

        <xsl:if test="matches('/OldPN','$qString')">
          <xsl:value-of select="OldPN" /> - <xsl:value-of select="OldName" />
        </xsl:if>

    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

Есть идеи? Буду так признателен за помощь в этом!

Ответы [ 3 ]

0 голосов
/ 11 августа 2010

Функция matches для регулярных выражений является новой в xslt 2.0, которая, вероятно, еще не поддерживается вашим процессором xslt.Если вы можете использовать простую строку вместо регулярного выражения, вы можете попробовать либо contains, либо starts-with.

Кроме того, в вашем примере второй параметр не должен быть заключен в кавычки, посколькубудет соответствовать буквенной строке "$ qString" вместо значения этого параметра.

0 голосов
/ 11 августа 2010

В настоящее время базовый libxslt поддерживает только (e) xslt 1.0.
Но вы можете зарегистрировать функции PHP, которые, например, делает preg_match () доступным.

см. http://docs.php.net/xsltprocessor.registerphpfunctions

0 голосов
/ 10 августа 2010

Если вы используете .NET, вы можете расширить xslt, внедрив свои собственные методы IL из основной программы.Таким образом, добавить поддержку регулярных выражений будет легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...