15

XSLT バージョン 1 に URL エンコード機能はありますか? javascriptのencodeURIComponent関数に似たものが必要ですか?

XSLTがSharepointページに適用されるため、.NETプラットフォームを使用しているため、これは不可能です。XML 内で JavaScript エンコード関数を呼び出すこの購入をコーディングする方法はありますか? 以下のスニペット:

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

ありがとう、

4

4 に答える 4

13

XSLTに埋め込まれたJScriptを使用できます...

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

そしてそれを次のように呼び出しますcustom:uriencode( url_to_encode )

<xsl:stylesheet ...タグに 追加して、最初に名前空間を定義する必要があります。xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:custom="http://youdomain.ext/custom"

[アップデート]

カスタム名前空間に付けたURLは何でもかまいません..それは単なる一意の識別子です..
リンクは、URLを識別子として使用しない場合は混乱が少ないと結論付けています..

[更新 2]

いくつかの追加情報。
MSXML6 を使用する場合は、AllowXsltScriptプロパティを使用して、XSLT でスクリプトを手動で許可する必要があります。(参照)
xslt とその設定をロードする方法に応じて、msx​​sl:script を使用したスクリプト ブロック の例を参照してください。スクリプトを許可する

于 2010-03-11T14:37:41.820 に答える
8

これらのXSLT 1.0 スタイルシートを使用して、URL のエンコード/デコードを実行できます。

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

説明: URI に安全に埋め込むことができるのは、ASCII 文字のごく一部のサブセットのみです。このセット外の文字は、いわゆる「URL エンコーディング」または「% エスケープ」を使用してエスケープする必要があります。文字は何らかのエンコーディング (可能な場合は ASCII) に従ってバイトに変換され、これらのバイトはそれぞれ「%」の後に 2 桁の 16 進数が続く形式で書き込まれます。この変換の基礎として使用されるエンコーディングは何でもかまいませんが、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 デモは、iso-string という名前のパラメータとして渡された任意の文字列を URL エンコードします。ISO-8859-1 が URL エンコーディングのベースになると想定しています。XSLT 1.0 プロセッサと互換性があるはずです。

ISO-8859-1 ベースの URL エンコード文字列をデコードするには、同様の手法を使用します。デモについては、url-decode.xsl を参照してください。その url パラメータは、デコードされる文字列です。

于 2010-08-19T01:39:03.530 に答える
1

特定の状況下では、EXSLT (パーサー提供の拡張機能) を使用できます: Dave Pawson の XSLT FAQ on this one.

ただし、XSLT は完全なチューリングであるため、理論的には XSLT 自体に基本的な URL エンコーダーを記述できます (私は試みません)。

于 2010-03-11T14:17:34.697 に答える
1

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.

于 2010-03-11T14:10:45.097 に答える