XSLT строчные с использованием .NET - PullRequest
5 голосов
/ 08 ноября 2010

Я использую следующий XSLT с использованием XMLSpy:

<?xml version="1.0" encoding="UTF-16"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <xsl:output method="xml" version="1.0" encoding="UTF-16" indent="yes"/>
        <xsl:template match="*">
        <xsl:element name="{lower-case(local-name())}">
            <xsl:apply-templates select="@*"/>
            <xsl:apply-templates select="* | text()"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="@*">
        <xsl:attribute name="{lower-case(local-name())}"><xsl:value-of select="."/></xsl:attribute>
    </xsl:template>
</xsl:stylesheet>

Если я пытаюсь использовать его в своем источнике (XslCompiledTransform), я получаю исключение, сообщающее, что функция 'нижний регистр ()' не является частью синтаксиса XSLT.

Итак, я немного изменил преобразование:

fn:lower-case

Теперь мое исключение состоит в том, что сценарий или внешний объект с префиксом http://www.w3.org/2005/xpath-functions' не может быть найден. В чем дело здесь? Как я могу это исправить?

Привет

1 Ответ

4 голосов
/ 08 ноября 2010

.NET не реализует XSLT 2.0 / XPath 2.0.

В XPath 1.0 можно использовать следующее выражение вместо lower-case():

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