2016-10-25 2 views
0

Это не дубликат, проблема ist не показывает xml в html, а скорее для отображения xml со случайными стилями для отдельных строк.показать XML в HTML с встроенной таблицей стилей

Я смотрю с тех пор, как я нашел решение для отображения xml на странице html с встроенным css. Фон: входные данные - это xml-файл, что будет сравниваться с другим XML-файлом в java. Сравнение обрабатывается org.custommonkey.xmlunit. Теперь мне нравится преобразовывать xml через xslt и xpathes из результата сравнения xunit.

Входной XML (многоуровневая, но для этого примера очень упрощенной, Поле изменено является примером для всех других полей)

<ROOT>  
     <MATDETAIL> 
      <OUTPUT> 
        <GENERAL> 
         <CREATED_ON/> 
         <CREATED_BY>ORIGINAL USER</CREATED_BY> 
         <LAST_CHNGE/> 
         <CHANGED_BY>NEW USER</CHANGED_BY> 
        </GENERAL> 
        <RETURN> 
         <TYPE>S</TYPE> 
         <MESSAGE/> 
         <LOG_NO/> 
         <LOG_MSG_NO>000000</LOG_MSG_NO> 
        </RETURN> 
      </OUTPUT> 
     </MATDETAIL> 
</ROOT> 

XUnit Diff Результат XPath /ROOT [1]/MATDETAIL [1]/OUTPUT [1]/ОБЩИЙ [1]/CHANGED_BY [1]/текст() [1]

Теперь я буду perfom в перевод через XSLT (уже существующий)

мой XSL показывает, как этот

<xsl:template match="node() | @*"> 
<xsl:copy> 
<xsl:apply-templates select="node() | @*" mode="unescape"/> 
</xsl:copy> 
</xsl:template> 
<xsl:template match="/ROOT[1]/MATDETAIL[1]/OUTPUT[1]/GENERAL[1]/CHANGED_BY[1]"> 

    <xsl:element name = "span"> 
     <xsl:attribute name="style">font-weight:bold; color:red </xsl:attribute> 
     <xsl:copy> 
      <xsl:value-of select = "current()" /> 
     </xsl:copy> 
     <xsl:text>&lt;== Expected: dasda</xsl:text> 
    </xsl:element> 
</xsl:template> 
</xsl:stylesheet> 

что даст мне этот результат

<ROOT>  
     <MATDETAIL> 
      <OUTPUT> 
        <GENERAL> 
         <CREATED_ON/> 
         <CREATED_BY>ORIGINAL USER</CREATED_BY> 
         <LAST_CHNGE/> 
         <span style="font-weight:bold; color:red "><CHANGED_BY>NEW USER</CHANGED_BY>&lt;== Expected: ORIGINAL USER</span> 
        </GENERAL> 
        <RETURN> 
         <TYPE>S</TYPE> 
         <MESSAGE/> 
         <LOG_NO/> 
         <LOG_MSG_NO>000000</LOG_MSG_NO> 
        </RETURN> 
      </OUTPUT> 
     </MATDETAIL> 
</ROOT> 

Но я не смог показать этот XML в HTML правильно (с таблицами стилей). Либо я не получаю никаких тегов, поэтому, чтобы увидеть xml strcuture очень сложно также я получаю структуру xml, но без таблиц стилей.

Мне нравится показывать результат по сравнению с xunit двух файлов в веб-сервисе, и это тоже цветное, поэтому вы можете легко увидеть, какие элементы имеют изменения или являются неправильными.

Проблема заключается в том, чтобы показать полный xml +, и это, по-видимому, является реальной проблемой для окраски записей с помощью таблиц стилей. Я могу показать xml, но без встроенных таблиц стилей, или я могу показать стилизованный текст, но не тот и другой.

Я уже пытался заменить lt и gt внутри xslt, но не смог. Я попытался заменить lt и gt в rseult через пример java. поэтому каждый lt и gt являются html закодированными тегами. но результат очень уродливый. Мой коллега имел в виду, что мы никак не можем его использовать. Я попытался создать xml через css> definiton за тег. Но структура и поля полны динамически, поэтому я не могу определить css для каждого тега или поля. С другой стороны, каждое поле может быть правильным или неправильным, зависит также от файла xml, как для сравнения. Таким образом, поле изменено на первое сравнение, но при другом сравнении его неправильный

К сожалению, альтернативные варианты реализации не являются вариантом. Я должен сделать это как-то со средствами, доступными мне. (Java, XML & XSL, JS, HTML, CSS).

Я надеюсь получить хорошие идеи, чтобы растворить это.

Я хотел бы поблагодарить вас заранее.

+0

в спешке я забыл сказать спасибо заранее –

+0

См раствора при http://stackoverflow.com/a/40283800/6805256 – uL1

ответ

0

Вы можете использовать XSLT для преобразования xml в HTML, чтобы вы могли отображать его в браузере. Или создайте клиентскую службу JS, которая анализирует XML с сервера и отображает его.Это будет что-то вроде angularjs.

+0

я пытался преобразовать из XML в HTML, но есть та же проблема, стилизованный текст, но не теги xml. –

0

Я не уверен, что понял ваш запрос. Если вы хотите отобразить XML в HTML, вы можете вставить его в PRE теги: <pre><ROOT>...</ROOT></pre>

Если вы хотите отобразить XML, как это может отображаться ООН в/редактор XML HTML можно использовать Ace: https://ace.c9.io/#nav=about

Другого варианта, но не пробовали: https://highlightjs.org

+0

pre не работает. Я уже пробовал это. с pre, я получил текст в стиле, но без тегов. я должен показать полные теги, поэтому он выглядит как оригинальный xml, но также окрашен. –

+0

Так используйте туз или возможно highlight.js (https://highlightjs.org) – Thomas

Смежные вопросы