为什么对于macOS上的WebView
XSL转换,我必须这样设置stylesheet
路径:
<link rel="stylesheet" type="text/css">
<xsl:attribute name="href">
<xsl:value-of select="ScheduleData/@CSSPath"/>
</xsl:attribute>
</link>
CSS, XML和XSL文件都在Mac上的同一个文件夹中。最初我为CSS文件设置了一个硬编码的完整路径:
<link rel="stylesheet" type="text/css" href="/path to file/file.css"/>
但是我意识到这对用户来说是不合适的,所以我简单地去掉了路径,只留下文件名:
<link rel="stylesheet" type="text/css" href="file.css"/>
但是随后WebView
将找不到样式表。我甚至尝试使用href="./file.css"
来代替:
<link rel="stylesheet" type="text/css" href="./file.css"/>
它也不喜欢那样。最后,我决定将在运行时确定的完整路径添加为XML文件的属性,并调整XSL逻辑以使用它(如我的问题的第一个示例所示),以便能够正确地找到它。
该方法可以工作,但它强制用户具有同名的XSL和CSS文件(否则我不知道构建和传递什么路径)。
在Windows上,我一直在IE中使用XSL等,我总是能够只使用文件名,这将是相对于XSL文件。然而WebView
拒绝找到它。
在此上下文中是否有不同的方法来指定相对路径?
几天后又发生了。我在这里问了我的问题,却偶然找到了答案。😊
问题是HtmlWebViewSource
元素:
HtmlSource = new HtmlWebViewSource
{
Html = TransformXMLtoHTML(xmlpath, xslpath),
BaseUrl = StylesPath
};
我必须指定BaseUrl
。现在我的XSL代码看起来像这样:
<link rel="stylesheet" type="text/css" href="ElderlyInfirm-Schedule-v1.css"/>
一切都好!