URL функций XPath с префиксом fn не работает - PullRequest
4 голосов
/ 20 марта 2012

Следующий код XLST работает нормально: -

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                version="1.0">
<xsl:template match="/">
    <xsl:for-each select="bookstore/book">
        <xsl:if test="starts-with(author, 'W')">    <!-- Line 1 -->
            <xsl:value-of select="title" />
            &#160; by 
            <xsl:value-of select="author" />
            <br/>
        </xsl:if>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Здесь я непосредственно использую функцию XPath String начинается с () в строке 1.

Теперь, согласно W3Schools , добавление пространства имен для функций XPath (http://www.w3.org/2005/xpath-functions), следующий код не работает: -

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="1.0">
<xsl:template match="/">
    <xsl:for-each select="bookstore/book">
        <xsl:if test="fn:starts-with(author, 'W')">  <!-- Line 2 -->
            <xsl:value-of select="title" />
            &#160; by 
            <xsl:value-of select="author" />
            <br/>
        </xsl:if>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Здесь я использую функцию XPath с префиксом, прикрепленным к пространству имен.

IE показывает, что «Ошибка: Пространство имен» http://www.w3.org/2005/xpath-functions' не содержит никаких функций » Я проверил URL, и у него есть функции.

Куда я иду не так? И если я могу использовать все функции XPath с самим URL-адресом Transform, то почему предоставляется отдельный URL-адрес для функций XPath?

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Это потому, что IE использует MSXML, который поддерживает только XPath 1.0. В XPath / XSLT 1.0 нет необходимости ставить префикс стандартных функций XPath.

1 голос
/ 20 марта 2012

Теперь, согласно W3Schools, добавляем пространство имен для функций XPath. (http://www.w3.org/2005/xpath-functions), следующий код не работа: -

...

Здесь я использую функцию XPath с префиксом, прикрепленным к Пространство имен.

IE показывает, что "Ошибка: пространство имен http://www.w3.org/2005/xpath-functions' не содержит функции "

Старайтесь избегать "w3schools". Узнайте почему: http://w3fools.com/.

Пространство имен F & O, которое вы пытались использовать, было создано спустя много лет после публикации рекомендаций W3C XPath 1.0 и XSLT 1.0. Он относится только к функциям XPath 2.0, и это пространство имен неизвестно процессорам XPath 1.0 / XSLT 1.0.

Даже при использовании XPath 2.0 / XSLT 2.0 нет необходимости использовать пространство имен - любые имена функций без префиксов считаются находящимися в этом пространстве имен.

Решение :

Просто не используйте префиксы для каких-либо стандартных функций XPath.

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