这是我的 XSL 文件的一部分:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" indent="yes" version="4.01"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>
<xsl:param name="CSSFile1"></xsl:param>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<xsl:choose>
<xsl:when test="//Settings/ForeignGroupMode=1">
<xsl:attribute name="lang">
<xsl:value-of select="//Settings/ForeignGroupLanguageCode"/>
</xsl:attribute>
<xsl:attribute name="dir">
<xsl:value-of select="//Settings/ForeignGroupDirection"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="lang">
<xsl:value-of select="//Settings/LanguageCode"/>
</xsl:attribute>
<xsl:attribute name="dir">
<xsl:value-of select="//Settings/Direction"/>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<xsl:choose>
<xsl:when test="$CSSFile1 !=''">
<style type="text/css">
<xsl:value-of select="$CSSFile1"/>
</style>
</xsl:when>
<xsl:otherwise>
<link rel="stylesheet" type="text/css" href="Workbook-S-140-Legacy.css"/>
</xsl:otherwise>
</xsl:choose>
<title>
<xsl:value-of select="//Labels/Congregation"/> <xsl:value-of select="//Labels/Title" />
</title>
</head>
<body>
</body>
</html>
</xsl:template>
它有 CSS 链接,例如:
<link rel="stylesheet" type="text/css" href="Workbook-S-140-Legacy.css"/>
我尝试编写一个 C# 例程来为我提供所有链接的 CSS 文件的列表:
public string[] GetLinkedCssFilesList(string xslFilePath)
{
XDocument document = XDocument.Load(xslFilePath);
List<string> cssFiles = new List<string>();
var cssLinks = document.Descendants("link");
foreach(var css in cssLinks)
{
cssFiles.Add(css.Attribute("href").Value);
}
return cssFiles.ToArray();
}
但是结果列表是空的。为什么?
注意 XSL 中的默认 xml 命名空间声明
xmlns="http://www.w3.org/1999/xhtml"
。
link
元素属于 http://www.w3.org/1999/xhtml
xml 命名空间。
您在检索它们时需要包含该内容。
XNamespace ns = "http://www.w3.org/1999/xhtml";
var cssLinks = document.Descendants(ns + "link");