将 xsl:value-of 设置为 href 属性和 XSLT 中链接的文本字段

发布于 2024-08-27 13:58:42 字数 360 浏览 9 评论 0原文

如何通过 XSLT 转换设置既是链接又包含链接文本的 a href?到目前为止,这是我所得到的,这给了我错误“xsl:value-of 不能是 xsl:text 元素的子元素”:

<xsl:element name="a">
   <xsl:attribute name="href">
      <xsl:value-of select="actionUrl"/>
   </xsl:attribute>
   <xsl:text><xsl:value-of select="actionUrl"/></xsl:text> 
</xsl:element>

How can I set an a href that is both a link to and has the text for a link through an XSLT transformation? Here's what I have so far, which gives me the error "xsl:value-of cannot be a child of the xsl:text element":

<xsl:element name="a">
   <xsl:attribute name="href">
      <xsl:value-of select="actionUrl"/>
   </xsl:attribute>
   <xsl:text><xsl:value-of select="actionUrl"/></xsl:text> 
</xsl:element>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

姐不稀罕 2024-09-03 13:58:42

定义 XSL 文档中的文本部分。只有真实的纯文本才能到达这里,而 XML 节点则不能。您只需要 ,它无论如何都会打印文本。

<xsl:element name="a">
    <xsl:attribute name="href">
        <xsl:value-of select="actionUrl"/>
    </xsl:attribute>
    <xsl:value-of select="actionUrl"/>
</xsl:element>

<xsl:text> defines a text section in an XSL document. Only real, plain text can go here, and not XML nodes. You only need <xsl:value-of select="actionUrl"/>, which will print text anyways.

<xsl:element name="a">
    <xsl:attribute name="href">
        <xsl:value-of select="actionUrl"/>
    </xsl:attribute>
    <xsl:value-of select="actionUrl"/>
</xsl:element>
梦行七里 2024-09-03 13:58:42

您还可以这样做:

<a href="{actionUrl}"><xsl:value-of select="actionUrl"/></a>

You can also do:

<a href="{actionUrl}"><xsl:value-of select="actionUrl"/></a>
不必你懂 2024-09-03 13:58:42

您不需要 xsl:text 元素:

<xsl:element name="a">
  <xsl:attribute name="href">
    <xsl:value-of select="actionUrl"/>
  </xsl:attribute>
  <xsl:value-of select="actionUrl"/>
</xsl:element>

You don't need the xsl:text element:

<xsl:element name="a">
  <xsl:attribute name="href">
    <xsl:value-of select="actionUrl"/>
  </xsl:attribute>
  <xsl:value-of select="actionUrl"/>
</xsl:element>
在风中等你 2024-09-03 13:58:42

我想使用 .xsl 来保证多个格式化为 .html 报告的 XML 摘录之间的超链接的一致性。每条记录都有一个称为 ID 的主键(一个自动递增的数字),它作为参数传递给各种报告,但从未在这些报告中显示为列。我是这样做的。

<?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <html>
        <body>
            <table>
                <xsl:for-each select="table/row">
                    <tr>
                        <xsl:apply-templates>
                            <!-- id is primary key and is passed as a parameter to all the templates whether they need it or not -->
                            <xsl:with-param name="id"><xsl:value-of select="id"/></xsl:with-param>
                        </xsl:apply-templates>
                    </tr>
                </xsl:for-each>
            </table>
        </body>
    </html>
</xsl:template>

<xsl:template match="id">
    <!-- id is primary key and is never shown -->
</xsl:template>

<xsl:template match="employee_number">
    <!-- employee_number field always links to the attendance report -->
    <xsl:param name="id"/>
    <xsl:variable name="name"><xsl:value-of select="name(.)"/></xsl:variable>
    <td id="{$name}"><a href="attendance?id={$id}"><xsl:value-of select="."/></a></td>
</xsl:template>

<!-- other templates redacted for clarity/brevity -->

<xsl:template match="*">
    <!-- any field without a dedicated template is just a cell in the table -->
    <xsl:variable name="name" select="name(.)"/>
    <td id="{$name}"><xsl:value-of select="."/></td>
</xsl:template>

</xsl:stylesheet>

I wanted to use a .xsl to guarantee consistency of hyperlinks across a number of XML extracts being formatted as .html reports. Each record has a primary key called ID - an automatically incrementing number - which is passed as a parameter to various reports, but never shown as a column in those reports. Here's how I did it.

<?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <html>
        <body>
            <table>
                <xsl:for-each select="table/row">
                    <tr>
                        <xsl:apply-templates>
                            <!-- id is primary key and is passed as a parameter to all the templates whether they need it or not -->
                            <xsl:with-param name="id"><xsl:value-of select="id"/></xsl:with-param>
                        </xsl:apply-templates>
                    </tr>
                </xsl:for-each>
            </table>
        </body>
    </html>
</xsl:template>

<xsl:template match="id">
    <!-- id is primary key and is never shown -->
</xsl:template>

<xsl:template match="employee_number">
    <!-- employee_number field always links to the attendance report -->
    <xsl:param name="id"/>
    <xsl:variable name="name"><xsl:value-of select="name(.)"/></xsl:variable>
    <td id="{$name}"><a href="attendance?id={$id}"><xsl:value-of select="."/></a></td>
</xsl:template>

<!-- other templates redacted for clarity/brevity -->

<xsl:template match="*">
    <!-- any field without a dedicated template is just a cell in the table -->
    <xsl:variable name="name" select="name(.)"/>
    <td id="{$name}"><xsl:value-of select="."/></td>
</xsl:template>

</xsl:stylesheet>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文