Xml 在XSL中计算数字的平方根

Xml 在XSL中计算数字的平方根,xml,function,xslt,math,sqrt,Xml,Function,Xslt,Math,Sqrt,我已经尝试过多次在XSL/XML中计算一个数字的平方根,但都没有成功。这是我最近的一次尝试。我得到一个错误“命名模板'sqrt'在样式表中不存在”。这是我需要为此样式表编写的最后一部分,然后我可以提交我的项目-短暂性脑缺血发作 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:f

我已经尝试过多次在XSL/XML中计算一个数字的平方根,但都没有成功。这是我最近的一次尝试。我得到一个错误“命名模板'sqrt'在样式表中不存在”。这是我需要为此样式表编写的最后一部分,然后我可以提交我的项目-短暂性脑缺血发作

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:msxsl="urn:schemas-
 microsoft-com:xslt" xmlns:inr="http://mycompany.com/mynamespace">
<xsl:import href="sqrt.xsl" />

<xsl:template match="HorizontalLine | HorizontalCircle | HorizontalSpiral">
<xsl:if test="Start[@pointType = 'POB']">
    SqRt:
      <xsl:call-template name="sqrt">
        <xsl:with-param name="value" select="100"/>
      </xsl:call-template>
</xsl:if>
</xsl:template>

SqRt:

错误消息显示“命名模板'sqrt'不存在”。我们希望在
sqrt.xsl
中找到它,但是您没有向我们展示
sqrt.xsl
,因此我们可以推断(a)它不在那里,并且(b)您可能不了解导入是如何工作的,否则您会理解消息并向我们展示代码

有关如何在XSLT1.0中计算平方根的示例,请参见

其他两项评论:

(a) 没有XSLT版本1.1。当时有一个1.1的草案(大约在2001年),但它被放弃了,从未超越草案的地位

(b) 您会说:“这是我需要为这个样式表编写的最后一部分,然后我可以提交我的项目”。(i) 这些信息与您的问题无关,(ii)它反映了您的经验不足,因为有经验的程序员知道,您永远不应该期望您当前正在处理的bug是最后一个。


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:inr="http://mycompany.com/mynamespace" xmlns:math="http://exslt.org/math">
<xsl:import href="sqrt.xsl" />
<xsl:include href="../format.xsl"/>
<xsl:param name="xslRootDirectory" select="inr:xslRootDirectory"/>
<!-- List Coordinates with Station Report -->
<xsl:template match="/">
    <xsl:variable name="gridOut" select="inr:SetGridOut(number(InRoads/@outputGridScaleFactor))" />
    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="{$xslRootDirectory}/_Themes/engineer/theme.css"/>
        </head>
        <body>
            <xsl:apply-templates/>
        </body>
    </html>
</xsl:template>
<!-- Element Point Data -->
<xsl:template match="HorizontalLine | HorizontalCircle | HorizontalSpiral">
    <xsl:variable name="startStation" select="Start/station/@internalStation"/>
    <xsl:variable name="endStation" select="End/station/@internalStation"/>
    <!-- This section is to force the PC to PI information -->
        <tr>
            <xsl:variable name="varElementNumber" select="@elementNumber - 1"/>
            <!-- Element DIST Section -->
            <xsl:variable name="varX1" select="PI/@easting"/>
            <xsl:variable name="varY1" select="PI/@northing"/>
            <xsl:variable name="varX2" select="Start/@easting"/>
            <xsl:variable name="varY2" select="Start/@northing"/>
            <td class="sidepad" align="center">
            varElementNumber: <xsl:value-of select = "$varElementNumber"/><br/>
            varX1: <xsl:value-of select = "$varX1"/><br/>
            varY1: <xsl:value-of select = "$varY1"/><br/>
            varX2: <xsl:value-of select = "$varX2"/><br/>
            varY2: <xsl:value-of select = "$varY2"/><br/>
            Distance: <xsl:value-of select = "($varX2 - $varX1) * ($varX2 - $varX1) + ($varY2 - $varY1) * ($varY2 - $varY1)"/><br/>
            SqRt:   
                <xsl:call-template name="math:sqrt">
                    <xsl:with-param name="number" select="25"/>
                </xsl:call-template>
            </td>
            <!-- End Station -->
        </tr>
</xsl:template>
varElementNumber:
varX1:
变量1:
varX2:
varY2:
距离:
SqRt:

您使用的是哪个XSLT处理器?而
sqrt.xsl
文档中到底是什么呢?EXSLT math.sqrt样式表包含一个名为math的模板:sqrt,而不是sqrt。名称空间很重要!我尝试了数学:sqrt,但这也不起作用。至于sqrt.xsl的内容,我不知道。我遵守了网站的指示。我相信有一条注释包含了指向样式表的链接。当我使用math:sqrt时,我收到一个错误,指出命名模板“(http;//exslt.org/math)sqrt”在样式表中不存在。感谢您指出我使用XML的不足之处。我从未说过我精通这门语言,我希望你的评论能让你感觉比我好。1.1来自我用作模板的基础文档。正如您所指出的,我的专长不是XML。我不知道1.1和1.0在功能上意味着什么。当我试图放置时,我得到一个错误,说明样式表格式不正确。也许你没有声明数学名称空间前缀。@MichaelMadrid你不应该把事情看得太私人。在StackOverflow这样的网站上发布代码会让您的代码受到专家的仔细检查,这是一种很好的学习方法。这应该会让你感觉良好,你已经制定了一个问题,使你能够学到一些东西。哈哈。同意。在这一点上我非常沮丧。我知道vb、vbs和.NET,但对XML一无所知。谢谢你的重定向。