Исключение всех пространств имен из вывода XslCompiledTransform.Transform - PullRequest
1 голос
/ 24 августа 2010

Как я могу опустить все пространства имен XML из xslt в выводе html?

Мой XSL начинается с:

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">

и мой код для преобразования XML выглядит следующим образом

StringBuilder sb = new StringBuilder(600);
XslCompiledTransform xslTrans = new XslCompiledTransform();

xslTrans.Load(XslDoc);//loads the XSL

XmlWriterSettings writerSettings = new XmlWriterSettings();
writerSettings.OmitXmlDeclaration = true;
writerSettings.ConformanceLevel = ConformanceLevel.Auto;
writerSettings.NamespaceHandling = NamespaceHandling.OmitDuplicates;


using (XmlWriter stringWriter = XmlWriter.Create(sb, writerSettings))
{
    xslTrans.Transform(XmlDoc, xslArguments, stringWriter);
}
return sb.ToString();

Но в сгенерированном html-выводе появляются пространства имен следующим образом:

<div class="newsFeed" xmlnsxs="http://www.w3.org/2001/XMLSchema" xmlnsfn="http://www.w3.org/2005/xpath-functions" >

Как я могу опустить все пространства имен в сгенерированном выводе? Было бы здорово, если бы я мог сделать это, изменив XSL, чтобы пользователь мог изменить свой XSL для встраивания своего пространства имен, но по умолчанию это будет чистый HTML-код без xmlns.

1 Ответ

5 голосов
/ 24 августа 2010

Возможно, вы ищете атрибут exclude-result-prefixes в элементе xsl:stylesheet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...