小编use*_*917的帖子

在 XSLT 中使用函数

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

  1. 未为“ownFunction()”声明命名空间。(“未声明的命名空间前缀 {xs}”)

  2. 未知系统函数 index-of-string()
    index-of-string我从这个网站得到的 XSLT 函数似乎无法识别

这是 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>
Run Code Online (Sandbox Code Playgroud)

xslt xpath functx

4
推荐指数
1
解决办法
2万
查看次数

转换输出`>`而不是`&gt;`

谢谢你的帮助!对此,我真的非常感激!我理解为什么我需要将值放在节点中,但我不是在使用模板而是使用函数......我只是想不出如何将这些节点和模板放在函数中?

如果我只显示我的XSLT文件,可能会更容易.你可以在下面找到该文件,例如,这可能是它传递给函数的$ string(未转换的XML文件):

&amp;#x003C;img src=&quot;Afbeeldingen Hotpot/beer.jpg&quot; alt=&quot;afbeelding van een beer&quot; title=&quot;beer&quot; width=&quot;170&quot; height=&quot;144&quot; style=&quot;display:block; margin-left:auto; margin-right:auto; text-align:center;&quot; style=&quot;float:center;&quot; /&amp;#x003E;
Run Code Online (Sandbox Code Playgroud)

这是XSLT文件的完整内容:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"     xmlns:foo="http://www.wathever.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs functx"
xmlns:functx="http://www.functx.com">

<xsl:import href="alle-functx-functies.xsl"/>

<xsl:function name="foo:functionIfImage">
    <xsl:param name="string" as="xs:string"/>
        <xsl:if test="contains($string,'.jpg')">
            <xsl:sequence select="foo:functionImage($string,'.jpg')"/>
        </xsl:if>
        <xsl:if test="contains($string,'.png')">
            <xsl:sequence select="foo:functionImage($string,'.png')"/>
        </xsl:if>
        <xsl:if test="contains($string,'.gif')">
            <xsl:sequence select="foo:functionImage($string,'.png')"/>
        </xsl:if>
        <xsl:if test="not(contains($string,'.jpg')) and not(contains($string,'.png')) and not(contains($string,'.gif'))">
            <xsl:sequence select="'iumi ondersteund alleen afbeeldingen van het formaat *.jpg, *.png of *.gif'"/>
        </xsl:if>
        <xsl:if test="not(contains($string,'img src='))">
            <xsl:sequence select="'bevat geen img src='"/> …
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath

4
推荐指数
1
解决办法
1642
查看次数

标签 统计

xpath ×2

xslt ×2

functx ×1

xml ×1