XSLT 版本 1 URL 编码

发布于 2024-08-24 17:48:31 字数 434 浏览 7 评论 0 原文

XSLT 版本 1 中有 URL 编码功能吗? 我需要类似于 JavaScript 中的encodeURIComponent 函数的东西?

看来这是不可能的,因为我正在使用 .NET 平台,因为 XSLT 应用于 Sharepoint 页面。有没有一种方法可以在 XML 中调用 javascript 编码函数来编码此购买,代码片段如下:

<xsl:template name="BuildLink">
    <xsl:param name="PrimarySubject" />
    <xsl:text>?PrimarySubject=</xsl:text>
    <xsl:value-of select="$PrimarySubject" />
</xsl:template>

谢谢,

Is there a URL encoding function in XSLT version 1?
I need something similar to encodeURIComponent function in javascript?

Seeing as this is not possible as I'm using .NET platform as the XSLT is applied to a Sharepoint page. Is there a way to code this buy calling the javascript encode function within the XML, snippet below:

<xsl:template name="BuildLink">
    <xsl:param name="PrimarySubject" />
    <xsl:text>?PrimarySubject=</xsl:text>
    <xsl:value-of select="$PrimarySubject" />
</xsl:template>

Thanks,

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

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

发布评论

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

评论(4

┾廆蒐ゝ 2024-08-31 17:48:31

您可以使用嵌入在 XSLT 中的 JScript ...

<msxsl:script language="JScript" implements-prefix="custom">
function uriencode(string) {
 return encodeURIComponent(string);
}
</msxsl:script>

并像 custom:uriencode( url_to_encode ) 一样调用它。

您首先需要通过添加到 标记
xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:custom="http://youdomain.ext/custom"

[更新]

我为自定义名称空间设置的 URL 可以是任何内容.. 它只是一个唯一标识符..
该链接的结论是,如果不使用 url 作为标识符,就不会那么混乱。

[udpdate 2]

一些添加的信息.
如果您使用 MSXML6,则需要使用 AllowXsltScript 属性手动允许在 XSLT 中编写脚本。(参考 )
根据您加载 xslt 的方式及其设置,请查看 使用 msxsl:script 的脚本块了解如何允许脚本

you can use JScript embedded in XSLT ...

<msxsl:script language="JScript" implements-prefix="custom">
function uriencode(string) {
 return encodeURIComponent(string);
}
</msxsl:script>

and call it like custom:uriencode( url_to_encode )

You will first need to define the namespace though by adding to the <xsl:stylesheet ... tag the
xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:custom="http://youdomain.ext/custom"

[update]

the Url i put for the custom namespace could be anything .. it is just a unique identifier..
(the link concludes that it is less confusing if you do not use a url as the identifier..)

[udpdate 2]

Some added info.
If you use MSXML6 then you need to manually allow scripting in the XSLT, by using the AllowXsltScript property.. ( reference )
Depending on the way you load the xslt and its settings have a look at the examples at Script Blocks Using msxsl:script on how to alow scripts

我不在是我 2024-08-31 17:48:31

这些 XSLT 1.0 样式表 可用于执行 URL 编码/解码:

  1. url-decode.xsl
  2. url-encode.xsl

描述:只有很小的子集
ASCII 字符可以安全地
嵌入在 URI 中。外面的人物
该集合必须使用转义
所谓的“URL 编码”或
“%-转义”。人物是
根据一些转换为字节
编码(如果可能的话 ASCII)和那些
每个字节都写为“%”
后跟 2 个十六进制数字。这
编码用作此的基础
转换可以是任何东西,但往往
由上下文决定
URI 正在被使用。最近和
未来的标准使用 UTF-8,但遗留的标准
应用程序包括许多
广泛部署,服务器端
HTML 表单数据的处理器假设
ISO-8859-1。

例如,问候语“¡Hola,
César!" 可以嵌入到 URI 中,如果
写法如下:
%A1Hola%2C%20C%E9sar!。 (...假设
ISO-8859-1作为编码的基础。
如果它是基于 UTF-8 的,那么它会
是%C2%A1Hola%2C%20C%C3%A9sar!)。

url-encode.xsl 演示 URL 编码
作为 a 传入的任意字符串
名为 iso-string 的参数。它假设
ISO-8859-1 将成为
URL 编码。应该是兼容的
与任何 XSLT 1.0 处理器一起使用。

解码基于 ISO-8859-1 的
URL编码的字符串使用类似的
技术。请参阅 url-decode.xsl 以了解
演示。它的url参数是字符串
待解码。

These XSLT 1.0 stylesheets can be used to perform URL encode/decode:

  1. url-decode.xsl
  2. url-encode.xsl

Description: Only a very small subset
of ASCII characters can be safely
embedded in a URI. Characters outside
this set must be escaped using
so-called "URL encoding" or
"%-escaping". The characters are
converted to bytes according to some
encoding (ASCII if possible) and those
bytes are each written as a '%'
followed by 2 hexadecimal digits. The
encoding used as the basis for this
conversion can be anything, but tends
to be dictated by the context in which
the URI is being used. Recent and
future standards use UTF-8, but legacy
applications including many
widely-deployed, server-side
processors of HTML form data assume
ISO-8859-1.

For example, the greeting "¡Hola,
César!" can be embedded in a URI if it
is written as follows:
%A1Hola%2C%20C%E9sar!. (...assuming
ISO-8859-1 as the basis for encoding.
If it were UTF-8 based, then it would
be %C2%A1Hola%2C%20C%C3%A9sar!).

The url-encode.xsl demo URL-encodes an
arbitrary string passed in as a
parameter named iso-string. It assumes
ISO-8859-1 will be the basis for the
URL-encoding. It should be compatible
with any XSLT 1.0 processor.

Decoding an ISO-8859-1 based
URL-encoded string uses a similar
technique. See url-decode.xsl for a
demo. Its url parameter is the string
to be decoded.

青春有你 2024-08-31 17:48:31

没有一个。 XSLT 不了解 URL 和 HTML。

根据您使用的语言和平台,您也许可以使用 XSLT 扩展 可以做到这一点。

There isn't one. XSLT has no knowledge of URLs and HTML.

Depending on the language and platform you are using, you may be able to use a XSLT extension that does that.

九歌凝 2024-08-31 17:48:31

在某些情况下,您可以使用 EXSLT(解析器提供的扩展): Dave Pawson 关于此问题的 XSLT 常见问题解答

然而,XSLT 是图灵完备的,因此理论上您可以在 XSLT 本身中编写一个基本的 URL 编码器(我不会尝试)。

You can, under certain circumstances use EXSLT (parser-provided extensions): Dave Pawson's XSLT FAQ on this one.

However, XSLT is Turing complete, so you could write a basic URL encoder in XSLT itself, theoretically (I wouldn't try).

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