我們的GSA使用FileConnector來索引作爲DFS鏈接目標的不同份額。我正嘗試在前端XSL中將file://filesrv01.example.com/share$/dir/file.ext
重寫爲file://R:/hare/dir/file.ext
。這是substring-after和concat破壞我的編碼嗎?
有針對不同協議xsl:choose
元素至極測試,但沒有file://
,所以我假設默認處理我的源鏈接將是這樣的節點:
<xsl:otherwise>
<xsl:value-of disable-output-escaping='yes' select="U"/>
</xsl:otherwise>
我們創建了一個新的xsl:when
節點是這樣的:
<xsl:when test="starts-with(U, 'file://server.example.com/share$>
<xsl:value-of disable-output-escaping='yes'
select="concat('file://R:/share/',
substring-after(U,'file://server.example.com/share$/'))"/>
</xsl:when>
這適用於我們索引中的幾乎所有條目,但當路徑包含德語變音符時,它會失敗。繼輸入,實際和預期輸出:
file://server/share$/dir/FileWithUmläut.txt
file://R:/share/dir/FileWithUmläut.txt
file://R:/share/dir/FileWithUmläut.txt
爲什麼工作的默認xsl:otherwise
不改變變音符號,但我們的concat +子是不是?任何我可以檢查或更改的東西?
編輯#1 XSL文件中只有一個輸出元素:<xsl:output method="html"/>
。 XSL本身在Notepad ++中被識別爲ANSI,在UI文本中帶有一些Umlauts。輸出到瀏覽器是utf-8 xhtml。
編輯#2 當我用下面的塊代替xsl:when
時,編碼不會中斷,鏈接可以打開(不使用DFS根目錄,而是直接使用unc)。因此,我相信它不是XML或XSL的編碼,儘管如此,感謝您的輸入@MathiasMüller。
<xsl:when test="starts-with(U, 'file://server.example.com/share$/')">
<xsl:value-of disable-output-escaping='yes' select="U"/>
</xsl:when>
我想第三行應該是實際產出,第二行應該是預期產出?在我看來,這與'concat'或'xsl:otherwise'無關。 XML文件是如何編碼的?如果此元素存在,那麼樣式表的編碼和'xsl:output'的encoding屬性是什麼? – 2014-09-19 10:42:22
@MathiasMüller第二和第三行是從Internet Explorer複製的acutal鏈接。輸出源中的第三個(非工作)鏈接是'file:// R:/ share/dir/FileWithUml%C3%A4.txt' – 2014-09-19 11:08:05
這並不回答我所有的問題。轉換的輸入是XML - 它的編碼是什麼?你能否將樣式表的編碼更改爲UTF-8,並且明確指定' ? –
2014-09-19 11:16:09