Код, который у вас есть, по большей части является правильным, похоже, вам нужно только добавить вложенный массив к значению по умолчанию:
constructor(props) {
super(props);
this.state = {
selectedWeek: 1,
selectedSeason: 2015,
scoreData:[ [] ], // <--- this right here
};
}
Или альтернативно установить scoreData
во вложенный массив [ 113]
При создании 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();
Это - настоящая распространенная проблема при генерации HTML от XSLT. Я подозреваю, что корень проблемы - то, что сам XSLT является XML-документом. Даже при том, что Вы запускаете со своей программы XSLT, как сериализировано XML, к тому времени, когда процессор XSLT получает его, это было уже десериализовано к представлению "инфонабора". На уровне XML пустой тег и самозакрытый эквивалентны; элемент вполне просто не имеет детей. Это означает, что Ваш процессор XSLT никогда не будет, вероятно, видеть версии программы, где элемент сценария имеет и открывающий и закрывающий тэг.
Я обычно обхожу это при помощи соответственно завершенного неразрывного пространства. В любом случае необходимо поместить что-то в теге script.
Между прочим - это не о создании счастливого IE. При рассмотрении спецификации HTML Вы найдете, что конечный тэг требуется. Я уверен, что некоторые люди найдут это нелепым, что IE реализует его правильно.:-)
И это против механизма MS XSLT, конечно? Как странный. Я не могу сказать, что встретился с этим в.NET 1.1 или 2.0, и у меня есть много преобразований, делающих точно то же самое, таким образом, я предложил бы, чтобы Вы пошли с простым обходным решением.
Я использовал комментарий перед тегом конца сценария, чтобы разобраться с этой проблемой.
Это сделано намеренно, и единственный известный мне обходной путь - использовать собственный 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();
}
}
}
Те из вас, кто использовал 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 и предотвратит теги
и
и выведет
и