XML 変換に渡す前に、XSLT ドキュメントに対して後処理を実行しようとしています。XmlDocument としてロードし、通常どおりに SelectNodes を使用して更新するノードをトラバースするのが最善の方法だと思いましたが、必要なノードを見つけるのに問題があるようです。すべてのクエリは、0 個のノードが見つかりました。
名前空間と関係があると思われますが、その方法がわかりません。
サンプル XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" indent="yes"/>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<a href="/">
</body>
</html>
</xsl:template>
</xsl:stylesheet>
サンプル C#:
XmlDocument style = new XmlDocument();
style.Load("sample.xslt");
foreach (XmlNode anchor in style.SelectNodes("//a"))
...
<a>
しかし、タグや、私が試した他のタグが見つかりません。
コードを次のように変更してみました。
XmlDocument style = new XmlDocument();
style.Load("sample.xslt");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(style.NameTable);
nsmgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
foreach (XmlNode anchor in style.SelectNodes("//a", nsmgr))
...
これにより、実際にはxsl:
接頭辞 (例: .SelectNodes("/xsl:stylesheet")
) を持つノードを選択できますが、内部の HTML ノードは選択できません。
どんな提案でも大歓迎です!