Явный конечный тэг сценария, всегда преобразовываемый в закрывающийся автоматически

Код, который у вас есть, по большей части является правильным, похоже, вам нужно только добавить вложенный массив к значению по умолчанию:

constructor(props) {
    super(props);
    this.state = {
         selectedWeek: 1,
         selectedSeason: 2015,
         scoreData:[ [] ], // <--- this right here
    };
}

Или альтернативно установить scoreData во вложенный массив [ 113]

10
задан 3 December 2008 в 09:49
поделиться

6 ответов

При создании XmlWriter сами, необходимо передать OutputSettings преобразования XmlWriter, например:

XmlDocument doc = new XmlDocument();
doc.LoadXml("<book><author>Trudi Canavan</author><title>Voice of the Gods</title></book>");

XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("XSLTFile1.xslt");

StringBuilder output = new StringBuilder();

// Here we pass the output setting to the writer, otherwise the transform
// may be set to Html, but the XmlWriter will be outputting Xml
XmlWriter writer = XmlWriter.Create(output, transform.OutputSettings);

transform.Transform(doc, writer);

Console.WriteLine(output.ToString());
Console.ReadKey();
7
ответ дан 3 December 2019 в 21:23
поделиться

Это - настоящая распространенная проблема при генерации HTML от XSLT. Я подозреваю, что корень проблемы - то, что сам XSLT является XML-документом. Даже при том, что Вы запускаете со своей программы XSLT, как сериализировано XML, к тому времени, когда процессор XSLT получает его, это было уже десериализовано к представлению "инфонабора". На уровне XML пустой тег и самозакрытый эквивалентны; элемент вполне просто не имеет детей. Это означает, что Ваш процессор XSLT никогда не будет, вероятно, видеть версии программы, где элемент сценария имеет и открывающий и закрывающий тэг.

Я обычно обхожу это при помощи соответственно завершенного неразрывного пространства. В любом случае необходимо поместить что-то в теге script.

Между прочим - это не о создании счастливого IE. При рассмотрении спецификации HTML Вы найдете, что конечный тэг требуется. Я уверен, что некоторые люди найдут это нелепым, что IE реализует его правильно.:-)

4
ответ дан 3 December 2019 в 21:23
поделиться

И это против механизма MS XSLT, конечно? Как странный. Я не могу сказать, что встретился с этим в.NET 1.1 или 2.0, и у меня есть много преобразований, делающих точно то же самое, таким образом, я предложил бы, чтобы Вы пошли с простым обходным решением.

0
ответ дан 3 December 2019 в 21:23
поделиться

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

0
ответ дан 3 December 2019 в 21:23
поделиться

Это сделано намеренно, и единственный известный мне обходной путь - использовать собственный XmlTextWriter :

public class HtmlTextWriter : XmlTextWriter
{
    private readonly string[] fullEndElements = 
        new string[] { "script", "title" };

    private string lastStartElement = null;


    public HtmlTextWriter(TextWriter textWriter)
        : base(textWriter)
    {
    }

    public HtmlTextWriter(string filename, Encoding encoding)
        : base(filename, encoding)
    {
    }

    public HtmlTextWriter(Stream w, Encoding encoding)
        : base(stream, encoding)
    {
    }

    public override void WriteStartElement(string prefix, string localName, string ns)
    {
        lastStartElement = localName;
        base.WriteStartElement(prefix, localName, ns);
    }

    public override void WriteEndElement()
    {
        if (Array.IndexOf(fullEndElements, lastStartElement) > -1)
        {
            base.WriteFullEndElement();
        }
        else
        {
            base.WriteEndElement();
        }
    }
}
1
ответ дан 3 December 2019 в 21:23
поделиться

Те из вас, кто использовал Xalan 2.7.0 (на Java), столкнулись с той же проблемой. Я использовал файл org / apache / xml / serializer / ToStream.java в исходном коде, чтобы обойти эту проблему. Если вы укажете как outputProperty:

private static Properties XHTML() {
  Properties p = new Properties();
  p.setProperty(OutputKeys.METHOD, "xhtml");
  p.setProperty(OutputKeys.DOCTYPE_PUBLIC,
    "-//W3C//DTD XHTML 1.0 Strict//EN");
  p.setProperty(OutputKeys.DOCTYPE_SYSTEM,
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
  p.setProperty(OutputKeys.ENCODING, "UTF-8");
  p.setProperty("{http://xml.apache.org/xalan}indent-amount", "4");
  p.setProperty(OutputKeys.INDENT, "yes");
  p.setProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
  p.setProperty("{http://example.com}selfclosing","no");
  return p;
 }

Обратите внимание на последнюю строку в самозакрывании . Это свойство, на которое отвечает эта обновленная версия ToStream.java и предотвратит теги

и