объявление xml не пропускается со страницы - PullRequest
0 голосов
/ 29 марта 2010

У меня есть XSLT-преобразование, которое я использую для обработки XML-файла и вставки его в тело моей страницы aspx.

Ссылка на следующую информацию:

фон на xml / xslt

В моем XML-файле есть следующее:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
    xmlns:myCustomStrings="urn:customStrings">
  <xsl:output
    method="xml" version="2.0"
    media-type="text/html"
    omit-xml-declaration="yes"
    indent="yes"
 />...unrelated stuff left out here

Вот вывод, который является подходящим:

<div id="example" />
    <?xml version="1.0" encoding="utf-8"?><div xmlns:myCustomStrings="urn:customStrings"><div id="imFormBody" class="imFormBody">

Мой вопрос касается вывода, в частности, <?xml version="1.0" encoding="utf-8"?>, который все равно включается в вывод. Связана ли проблема с пользовательским методом, который я использовал? Если это так, я не вижу необходимости включать часть XML, так как пространство имен находится в теге div. Есть ли способ гарантировать, что этот дополнительный материал будет исключен, как я и просил?

преобразовать код: да, это уродливо, но я создаю некоторые вещи :))

public static string SmartNotePageFromTemplate(string patientVisitId, string followupType, bool copyPreviousNote)
    {
        // create custom object
        CustomStrings customStrings = new CustomStrings();//specify class for use in XSLT

        string noteXmlFile = ImSmartNotesConfig.GetSmartNotesXmlFile();//get xml data file name from config
        string noteXslFile = ImSmartNotesConfig.GetSmartNotesXsltFile();// get xslt file name from config

        string subXmlFile = "../SmartNotesXml/testData.xml";
        string subCSSFile = "../CSS/testCSS.css";
        string subJSFile = "../Js/testJS.js";

        try
        {
            XsltSettings settings = new XsltSettings(true, true);// allow the document() in the xslt

            XsltArgumentList xslArg = new XsltArgumentList();// create argument list for xslt
            xslArg.AddParam("subXmlFile", "", subXmlFile);
            xslArg.AddParam("subCSSFile", "", subCSSFile);
            xslArg.AddParam("subJSFile", "", subJSFile);
            //pass an instance of the custom object
            xslArg.AddExtensionObject("urn:customStrings", customStrings);

            XslCompiledTransform myXslt = new XslCompiledTransform(true);// we will use the compiled xslt processor
            myXslt.Load(noteXslFile, settings, new XmlUrlResolver());// load the xslt in
            StringWriter stWrite = new StringWriter();// create output writer

            //myXslt.Transform(noteXmlFile, xslArg, stWrite);// transform 
            SmartNote.BL.SmartNoteLogic logic = new SmartNote.BL.SmartNoteLogic();
            XmlDocument noteXml = logic.GetNewNoteXml(patientVisitId, followupType, copyPreviousNote);
            myXslt.Transform(noteXml, xslArg, stWrite);// transform 

            return stWrite.ToString();// put the StringWriter as a string to the output- html page in this instance, as used in the .aspx.cs file
        }
        catch (Exception e)
        {
            throw e;
        }
    }

1 Ответ

4 голосов
/ 20 августа 2010

Как выяснилось, это произошло в результате того, что на стороне сервера методов я сделал преобразование.

Неважно, что XSLT сказал, когда метод .net отверг это.

Я получил следующий фрагмент кода в моем коде c #:

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...