От новичка до гуру: Курсы программирования на CyberDuff

Сгенерировать Xml, исключая и используя xslt

У меня есть требование, когда мне нужно удалить корневой узел и отобразить xslt на веб-странице в формате XML.

Чтобы было понятнее, я напрямую дам желаемый выходной XML-файл и входной XML-файл, который я даю.

Мой входной XML-файл:

<cp:gtl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cp="urn:schemas-microsoft-com/contentpublishing/content" xmlns:ns1="http://www.w3.org/1999/xhtml" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-03-30T18:40:19" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
<cp:abstract>
&lt;weatherdata&gt;&lt;weather entityid="32226" alert="" timezone="5.5" long="72.8195343" lat="21.195015" attribution2="© Foreca" attribution="Data provided by Foreca" provider="Foreca" degreetype="F" imagerelativeurl="http://stjp.msn.com/as/wea3/i/en-us/" url="http://local.msn.com/worldweather.aspx?eid=32226&amp;q=Surat-IND" encodedlocationname="Surat%2c+IND" zipcode="" weatherlocationname="Surat, IND" weatherlocationcode="wc:INXX0157"&gt;&lt;current winddisplay="4 mph NE" windspeed="4" humidity="38" feelslike="90" observationpoint="Surat" observationtime="11:30:00" shortday="Wed" day="Wednesday" date="2011-11-09" skytext="Clear" skycode="32" temperature="90"/&gt;&lt;forecast shortday="Wed" day="Wednesday" date="2011-11-09" precip="5" skytextday="Clear" skycodeday="32" high="95" low="72"/&gt;&lt;forecast shortday="Thu" day="Thursday" date="2011-11-10" precip="5" skytextday="Clear" skycodeday="32" high="96" low="72"/&gt;&lt;forecast shortday="Fri" day="Friday" date="2011-11-11" precip="5" skytextday="Clear" skycodeday="32" high="96" low="72"/&gt;&lt;forecast shortday="Sat" day="Saturday" date="2011-11-12" precip="5" skytextday="Clear" skycodeday="32" high="95" low="75"/&gt;&lt;forecast shortday="Sun" day="Sunday" date="2011-11-13" precip="5" skytextday="Fair" skycodeday="34" high="96" low="79"/&gt;&lt;toolbar minversion="1.0.1965.0" timewindow="60"/&gt;&lt;/weather&gt;
&lt;/weatherdata&gt;
</cp:abstract>
</cp:gtl>

И мой ожидаемый выходной файл на веб-странице:

<?xml version="1.0"?>
<weatherdata>
<weather entityid="32226" alert="" timezone="5.5" long="72.8195343" lat="21.195015" attribution2="© Foreca" attribution="Data provided by Foreca" provider="Foreca" degreetype="F"   encodedlocationname="Surat%2c+IND" zipcode="" weatherlocationname="Surat, IND" weatherlocationcode="wc:INXX0157"><current winddisplay="4 mph NE" windspeed="4" humidity="38" feelslike="90" observationpoint="Surat" observationtime="11:30:00" shortday="Wed" day="Wednesday" date="2011-11-09" skytext="Clear" skycode="32" temperature="90"/><forecast shortday="Wed" day="Wednesday" date="2011-11-09" precip="5" skytextday="Clear" skycodeday="32" high="95" low="72"/><forecast shortday="Thu" day="Thursday" date="2011-11-10" precip="5" skytextday="Clear" skycodeday="32" high="96" low="72"/><forecast shortday="Fri" day="Friday" date="2011-11-11" precip="5" skytextday="Clear" skycodeday="32" high="96" low="72"/><forecast shortday="Sat" day="Saturday" date="2011-11-12" precip="5" skytextday="Clear" skycodeday="32" high="95" low="75"/><forecast shortday="Sun" day="Sunday" date="2011-11-13" precip="5" skytextday="Fair" skycodeday="34" high="96" low="79"/><toolbar minversion="1.0.1965.0" timewindow="60"/></weather>
</weatherdata>

Однако в настоящее время я могу удалить тег cp: abstract, и мой XML отображается правильно на веб-странице, однако, когда я просматриваю исходный код страницы, я все еще вижу ‹ и > заменены на › и ‹

Мой текущий xslt, который я написал:

<xslt:stylesheet version="1.0" exclude-result-prefixes="xslt cp gc"     xmlns:xslt="http://www.w3.org/1999/XSL/Transform" xmlns:cp="urn:schemas-microsoft-com/contentpublishing/content" xmlns:gc="http://schemas.microsoft.com/msn/granite/cm"
             xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts">
<xslt:output omit-xml-declaration="yes" method="xml"/>

<xslt:template match="gc:cm/gc:content/cp:root/cp:gtl">
    <xslt:apply-templates select="cp:abstract"/>
</xslt:template>

<xslt:template match="cp:abstract">
    <xslt:value-of select="." />
</xslt:template>

Can some one please help me correct my xslt so that I get the desired XML output? Also note that XML under cp:abstract tag is random generated from feed. Sometimes it is fo weathaer, sometimes some other dynamic xml. All I want is root node under cp:abstract tag to be extracted on my webpage in XML format.

10.11.2011

  • Правильно ли я понимаю, что вы хотите экранировать свой XML для отображения, независимо от XML, который у вас есть в качестве входных данных. То есть вы хотите отобразить на веб-странице некоторый текст, похожий на введенный вами XML? 10.11.2011
  • Да, вы абсолютно правы, например, я вижу этот URL-адрес weather.in. msn.com/data.aspx?weallocations=wc:INXX0157. XML виден на этой странице. Если вы просматриваете исходный код страницы, я все равно вижу тот же XML без него, и я хочу сделать это с моим входным XML, указанным выше. 10.11.2011
  • Итак, что не так с вашим текущим решением? Пожалуйста, отредактируйте вопрос и объясните. 10.11.2011

Ответы:


1

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

<weatherdata> 
   <weather entityid="32226" alert="" ....
</weatherdata>

Но когда вы делаете «Просмотр исходного кода», вы видите это

&lt;weatherdata&gt;
    &lt;weather entityid="32226" alert=""
&lt;/weatherdata&gt; 

Другими словами, он был «скрыт» для целей отображения. Проблема заключается в том, что ваш тег cp:abstract содержит строку текста, а не строку XML, и, поскольку вы выводите XML, процессор XSLT будет экранировать текст, чтобы не повлиять на результат. основной XML-документ.

Решение состоит в том, чтобы использовать disable-output-escaping для элемента xsl:value-of.

<xslt:template match="cp:abstract"> 
   <xslt:value-of select="." disable-output-escaping="yes"  /> 
</xslt:template> 

Когда это будет сделано, будет выведен следующий текст, который просто находится в формате XML.

<weatherdata> 
   <weather entityid="32226" alert="" ....
</weatherdata>

В качестве альтернативы вы можете изменить атрибут method в операторе xsl:output на text, и это должно иметь тот же эффект.

<xslt:output omit-xml-declaration="yes" method="text"/> 
12.11.2011
Новые материалы

Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

Игра в прятки с данными
Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

«Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

Все о кейсах: Camel, Snake, Kebab & Pascal
В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..

Как работает дистанционное парное программирование и почему оно может изменить вашу жизнь
Серебряная пуля от одиночества и отвлекающих факторов во время обучения программированию Независимо от того, работаете ли вы или учитесь удаленно, велика вероятность, что одиночество и..

🔥🔥👉Питон 🆚Javascript👈🔥🔥
Сегодня Python и Javascript потрясают мир в области ИТ. Все хотят выучить Python и Javascript, чтобы получить высокооплачиваемую работу. Различные фреймворки Python и Javascript расширяют..