gpt4 book ai didi

xslt - 在 XSLT 中使用函数

转载 作者:行者123 更新时间:2023-12-03 16:07:10 25 4
gpt4 key购买 nike

我正在学习 XSLT。这些问题可能很明显,但我现在真的被困住了。
Oxygen 返回以下两种错误:

  • Namespace is not declared for 'ownFunction()'. ("undeclared namespace prefix {xs}")

  • unknown system function index-of-string()
    XSLT 函数 index-of-string我来自 this website似乎无法识别

  • 这是 XSL 文件的简化版本:
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:foo="http://www.wathever.com">
    <xsl:output method="xml" />

    <xsl:function name="foo:ownFunction" as="xs:string">
    <xsl:param name="string" as="xs:string"/>

    <xsl:choose>

    <xsl:when test='contains($string,"src=")'>
    <xsl:variable name="position"><xsl:value-of select="index-of-string($string,'src=')"/>+<xsl:number value="10"/></xsl:variable>
    <xsl:variable name="partString"><xsl:value-of select="substring($string,$position)"/></xsl:variable>
    <xsl:variable name="length"><xsl:value-of select="index-of-string($partString,'quot;')"/> - <xsl:number value="2"/></xsl:variable>
    <xsl:value-of select="substring($partString,1,$length)"/>
    </xsl:when>

    <xsl:otherwise>
    <xsl:value-of select="hotpot-jmatch-file/data/title"/>
    </xsl:otherwise>

    </xsl:choose>
    </xsl:function>

    <xsl:template match="/">
    <data>
    <title>
    <xsl:variable name="string"><xsl:value-of select="hotpot-jmatch-file/data/title"/></xsl:variable>
    <xsl:value-of select="foo:ownFunction($string)"/>
    </title>
    </data>
    </xsl:template>
    </xsl:stylesheet>

    最佳答案

    Oxygen returns the following two kind of errors:

    1) Namespace is not declared for 'ownFunction()'. ("undeclared namespace prefix {xs}")



    这实际上是一个 XML 问题。任何 XSLT 样式表都可能是格式良好的 XML 文档。除了格式良好的其他要求之外,使用的任何命名空间前缀都必须绑定(bind)到命名空间声明中的命名空间 URI。

    要更正此绑定(bind) "xs" "http://www.w3.org/2001/XMLSchema" 的前缀-- 这意味着添加 xmlns:xs="http://www.w3.org/2001/XMLSchema"到一个元素(通常顶部元素是这个命名空间的一个不错的选择。

    您对 "foo:ownFunction" 有同样的问题.您必须有前缀 "foo"在使用它之前绑定(bind)/定义和可见。只需添加 xmlns:foo="my:foo"到样式表的顶部元素。

    2) "unknown system function index-of-string()". The XSLT function "index-of-string" I got from this website doesn't seems to be recognized: http://www.xsltfunctions.com/xsl/functx_index-of-string.html



    您忘记从 Priscilla Walmsley 的站点复制并粘贴该函数或将其保存在单独的文件中(推荐),然后使用 <xsl:import><xsl:include>将此样式表文件导入/包含到您的转换中。

    最后,这些问题表明您需要更系统地介绍 XSLT。找一本好书,好好读。你不会后悔的。 This answer 可能有助于列出我认为好的 XSLT 和 XPath 学习资源。

    关于xslt - 在 XSLT 中使用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5883079/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com