У меня есть данные XML, которые я возвращаю своему представлению. Я помещаю его в текстовую область, но это отображает восстановленный после форматирования. Как я могу отформатировать xml для дисплея, по моему мнению?
Я буду отображать xml только в части страницы, таким образом, я не смогу позволить IE отобразить его. Я хочу, чтобы это было в стандарте xml расположенный с отступом формат.
Я рекомендую взглянуть на Zend_Translate , Zend_Locale и Zend_date . Я только начинаю баллов с ними, но для меня, они уже выглядят как действительно хорошее, чистое и современное решение для интернационализации, в отличие от хаоса, который является GetText.
Введение в Zend_Translate перечисляет ряд сильных аргументов, зачем выбрать его (или что-то подобное) через GetText.
-121--4817751-В многоязычных приложениях, Содержание должно быть переведено в Несколько языков и отображение контента в зависимости от языка пользователя. Папирофон предлагает уже несколько способов обращаться Такие проблемы, однако PHP Раствор имеет некоторые проблемы:
Несвязанный API: нет единого API для другого источника форматы. Использование GetText для Пример очень сложный.
PHP поддерживает только GetText и родной массив: сама PHP предлагает только Поддержка массива или GetText. Все Другие форматы источников должны быть закодированы вручную, потому что нет родных служба поддержки.
Нет обнаружения языка по умолчанию: язык по умолчанию Пользователь не может быть обнаружен без более глубокого знание фона для разные веб-браузеры.
GetText не Безопасен в потоке: библиотека GetText PHP не тема безопасно, и он не должен использоваться в многопоточная среда. Это до проблемы с самой GetText, а не PHP, но это существующая проблема.
Просто загрузите XML в XELментов
, затем используйте xElement.tostring ()
.
Если, по «форматированию», вы имеете в виду отступ, то вы можете загрузить его в XMLDocument и записывать его в XMLWRITER , инициализированный с помощью ] Xmlwritersettings , который имеет отступ , установлен на true
.
private string FormatXml(string input)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(input);
using (StringWriter buffer = new StringWriter())
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(buffer, settings))
{
doc.WriteTo( writer );
writer.Flush();
}
buffer.Flush();
return buffer.ToString();
}
}
Вот что мне нравится делать:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" standalone="yes" omit-xml-declaration="yes"
encoding="utf-8" media-type="text/html" indent="no" cdata-section-elements=""
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<xsl:template match="/">
<html><head><title>XML Data</title>
<style type="text/css">th {text-align:right}</style></head>
<body><table><xsl:apply-templates/></table></body></html>
</xsl:template>
<xsl:template match="*[text() and *]">
<xsl:apply-templates select="@*"/>
<tr><th><xsl:value-of select="name()"/></th>
<td>
<xsl:for-each select="*|text()">
<xsl:choose>
<xsl:when test="name()">
<xsl:apply-templates mode="inline" select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</td>
</tr>
</xsl:template>
<xsl:template match="*" mode="inline">
<xsl:text> [ </xsl:text>
<strong><xsl:value-of select="name()"/></strong>
<xsl:if test="@*">
<xsl:text> ( </xsl:text>
<xsl:for-each select="@*"><xsl:if test="position() > 1" xml:space="preserve"> </xsl:if>
<em><xsl:value-of select="name()"/></em> = <xsl:value-of select="."/>
</xsl:for-each>
<xsl:text> )</xsl:text>
</xsl:if>
<xsl:text>: </xsl:text>
<xsl:apply-templates mode="inline"/>
<xsl:text> ] </xsl:text>
</xsl:template>
<xsl:template match="*[text() and not(*)]">
<xsl:apply-templates select="@*"/>
<tr><th><xsl:value-of select="name()"/></th>
<td><xsl:apply-templates/></td></tr>
</xsl:template>
<xsl:template match="*[(* or @*) and not(text())]">
<tr><td colspan="2"><fieldset><legend><xsl:value-of select="name()"/></legend>
<table><xsl:apply-templates select="@*"/><xsl:apply-templates/></table></fieldset></td></tr>
</xsl:template>
<xsl:template match="*[not(*|@*|text())]">
<tr><td colspan="2"><xsl:value-of select="name()"/></td></tr>
</xsl:template>
<xsl:template match="@*">
<tr><th><em><xsl:value-of select="name()"/></em></th>
<td><xsl:value-of select="."/></td></tr>
</xsl:template>
</xsl:stylesheet>
Если вы ищете простую структуру XML, по умолчанию IE View (с разборными узлами и т. Д.).
Француз IE здесь: RES: //MSXML.dll/defaultss.xsl .
Версия XSLT доступна онлайн в таких местах, как это . Я использую это в местах, где у меня нет большего преобразования Человека Фриднли, но все же хочется видеть XML в формате.
Вы можете использовать XSLT Для преобразования вашего XML в XHTML и затем отобразите это.
Как насчет замены «<» с <и затем набивать в блоке
. Пользователь не сможет редактировать его, но навернячно у вас есть лучшие инструменты, чем текстовая пара, верно?
Вы можете использовать код кода Java Script. Что касается форматирования, писатель XML (как я знаю) может выводить хорошо структурированный документ, его можно отключить по умолчанию для уменьшения веса.