Веб-страница Asp.net видна в формате XML в исходной странице просмотра, но выглядит удобной для пользователя в браузере? - PullRequest
2 голосов
/ 07 декабря 2010

Пожалуйста, посмотрите на этот пример ссылки: (weather.gov)

http://140.90.113.200/xml/current_obs/KLAX.xml

если вы просматриваете источник страницы в браузере, вы можете видеть, что он показывает данные в формате XML (usng xsl.?).

Мне нужно реализовать такую ​​простую веб-страницу.

Я думаю, что веб-сайт использует XML XSL ...

Я собираюсь реализовать веб-приложение на asp.net, которое будет использовать данные, хранящиеся в базе данных sql (или в базе данных xml, или в веб-службе), и отображать эту информацию, как и другие обычные веб-сайты, но в формате xml в приятном интерфейсе пользователя (используя xsl?). Этот веб-сайт Weather является лишь примером, показывающим, что я хочу сделать (я не буду использовать данные с этого сайта, у меня другое приложение). Моим требованием является возможность просмотра источника страницы только в формате XML . Теперь я понимаю, что xsl является решением для этого, но рассматривает возможность использования этого метода в asp.net. (Используйте xml / xsl на динамических страницах asp.net)

Мой вопрос?

Для меня важно сделать вывод веб-страницы в формате xml (видимым в формате xml в источнике просмотра страниц), но выглядит удобным для пользователей.

1.Как я могу сделать это в asp.net?

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

Спасибо.

Ответы [ 3 ]

3 голосов
/ 07 декабря 2010

view-source: http://140.90.113.200/latest_ob.xsl

Это должно помочь вам понять, что вам нужно делать, нет?

1 голос
/ 25 января 2011

хорошо, .. В качестве простого теста (в ASP.NET, SQL) я использовал набор данных для хранения данных, которые поступают из БД, а затем заполняет XmlDataDocument. Затем XslCompiledTransform и XmlTextWriter используются для загрузки определенного xsl. Наконец, стилизованная XML-страница будет отправлена ​​на страницу с помощью Response.OutputStream. После запуска страницы кажется, что XML-страница стилизована с использованием xsl, но моя главная проблема по-прежнему остается : Простая база данных представляет собой базу данных SQL с таблицей, которая содержит 4 столбца: идентификатор, имя, возраст, телефон ЭТО МОЙ Default.aspx.cs (Код) - (я не изменил предопределенный дизайн default.aspx)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Xml;
using System.Xml.Xsl;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
         SqlConnection Conn = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=TestDB;Integrated Security=SSPI;");
        Conn.Open();

        DataSet DS = new DataSet("TestDataSet");

        SqlDataAdapter DA = new SqlDataAdapter("SELECT TOP 1 * FROM TableTest", Conn);
        DA.Fill(DS, "Persons");

        Conn.Close();

        DS.EnforceConstraints = false;
        XmlDataDocument xmlDoc = new XmlDataDocument(DS);

        // Create a procesing instruction.  
        XmlProcessingInstruction newPI;

        String PItext = "<?xml version='1.0' encoding='utf-8'?>'";
        newPI = xmlDoc.CreateProcessingInstruction("xml-stylesheet", PItext);

        // Add the processing instruction node to the document.  
        xmlDoc.AppendChild(newPI);


        XslCompiledTransform xslTran = new XslCompiledTransform();
        xslTran.Load(MapPath("TestTransform.xsl"));
       // Response.ContentType = "text/xml;charset=UTF-8";
        XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8);

        xslTran.Transform(xmlDoc, null, writer);
        writer.Close();

    }
}

И это простой XSL-файл (TestTransform.xsl)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:str="http://xsltsl.org/string" version="1.0">

  <xsl:output method="html"/>
  <xsl:template match="Persons">
    <html>
      <head>
        <title>
         Simple Test : Information for : <xsl:value-of select="Name/text()"/>
        </title>

      </head>
      <style type="text/css">
        .label { font-weight: bold; vertical-align: text-top; text-align: right;}
        .xsllocation { font-size: 18px; color: white; font-weight: bold; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; }
      </style>
      <body bgcolor="#ddffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="/images/background1.gif">

        <table width="700" border="0" cellspacing="0">


          <td width="525" valign="top">
            <table cellspacing="2" cellpadding="0" border="0">
              <tr valign="top">
                <td>&#160;&#160;&#160;&#160;&#160;&#160;&#160;</td>
                <td width="100%" align="center">
                  <a name="contents" id="contents"></a>
                  <table style="margin-left: 10px;" align="left">



                    <xsl:variable name="name">
                      <xsl:value-of select="Name/text()"/>
                    </xsl:variable>
                    <xsl:if test="$name != 'NA' and $name != ''">
                      <tr>
                        <td class="label">Name is:</td>
                        <td>
                        <xsl:copy-of select="$name"/>
                      </td>
                      </tr>
                    </xsl:if>


                    <xsl:variable name="age">
                      <xsl:value-of select="Age/text()"/>
                    </xsl:variable>
                    <xsl:if test="$age != 'NA' and $age != ''">
                      <tr>
                        <td class="label">Age:</td>
                        <td>
                          <xsl:copy-of select="$age"/> years old
                        </td>
                      </tr>
                    </xsl:if>

                    <xsl:variable name="phone">
                      <xsl:value-of select="Phone/text()"/>
                    </xsl:variable>
                    <xsl:if test="$phone != 'NA' and $phone != ''">
                      <tr>
                        <td class="label">Phone Number:</td>
                        <td>
                          <xsl:copy-of select="$phone"/> 
                        </td>
                      </tr>
                    </xsl:if>
                  </table>
                </td>
              </tr>
            </table>
          </td>

        </table>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

1. ниже - Результат этой простой кодовой страницы. Когда я запускаю ее и просматриваю в исходный код страницы (с помощью браузера), он показывает HTML-теги (например, body, td, .. .):

<html xmlns:str="http://xsltsl.org/string"><head><title>
         Simple Test : Information for : Mr Abc              </title></head><style type="text/css">
        .label { font-weight: bold; vertical-align: text-top; text-align: right;}
        .xsllocation { font-size: 18px; color: white; font-weight: bold; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; }
      </style><body bgcolor="#ddffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="/images/background1.gif"><table width="700" border="0" cellspacing="0"><td width="525" valign="top"><table cellspacing="2" cellpadding="0" border="0"><tr valign="top"><td>       </td><td width="100%" align="center"><a name="contents" id="contents" /><table style="margin-left: 10px;" align="left"><tr><td class="label">Name is:</td><td>Mr Abc              </td></tr><tr><td class="label">Age:</td><td>32 years old
                        </td></tr><tr><td class="label">Phone Number:</td><td>345353232 </td></tr></table></td></tr></table></td></table></body></html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>

    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZKwzWK/GivBcwTW8PWk8wUf8dacg" />
</div>

    <div>

    </div>
    </form>
</body>
</html>

но, как я уже говорил, мне нужно, чтобы она выглядела как упомянутая страница о погоде (пожалуйста, просмотрите страницу в браузере) .. Примерно так: * когда * я нажимаю на странице просмотра источника в браузере ...

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet href="TestTransform.xsl" type="text/xsl"?>
<Persons version="1.0"  
    <Name>Mr Abc</Name>
    <Age>32</Age>
    <Phone>345353232</Phone>    
</Persons>

В чем проблема ?? Как я могу сделать (решить) это в asp.net?

0 голосов
/ 07 декабря 2010

Вам необходим учебник по преобразованию XML с использованием XSLT:

http://www.w3schools.com/xsl/xsl_transformation.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...