|
|
|||||||||||||||||||||||||||||
|
XML преобразование - масштабируемы ли вы настолько, насколько могли бы быть? (исходники)Источник: vbstreets
Масштабируемы ли вы настолько, насколько могли бы быть? Если вы помещаете в базу данных большую часть своей информации, то не рассчитывайте на это. Вот код, который я использовал на своем сайте tiberi.us Public Function TransformXML(strXMLURL As String, strXSLURL As String) As String Dim oSW As New System.IO.StringWriter() Try Dim oXR As New System.Xml.XmlTextReader(strXMLURL) Dim oXSLT As New System.Xml.Xsl.XslTransform() oXSLT.Load(strXSLURL) Dim oXPath As New System.Xml.XPath.XPathDocument(oXR) oXSLT.Transform(oXPath, Nothing, oSW) Catch e As System.Exception 'Put in custom error handler here... Dim x As String = e.ToString() End Try Return oSW.ToString() End Function 'TransformXML Достаточно одного взгляда на код, чтобы увидеть мощь XSL-процессора. Public Function TransformXML(strXMLURL As String, strXSLURL As String) As String ' Создание IOStream Dim oSW As New System.IO.StringWriter() Try Dim oXR As New System.Xml.XmlTextReader(strXMLURL) Два параметра, которые мы передаем в этот метод - это URL XML-файла и URL XSL-файла. Так как у нас есть оба эти параметра, мы можем преобразовать оба наших файла во что-то полезное. Обратите внимание, что мы создали объект StringWriter, использовали XMLTextReader и передали ему URL нашего XML-файла. Dim oXSLT As New System.Xml.Xsl.XslTransform() oXSLT.Load(strXSLURL) Объект XSLTransform, который мы продемонстрировали, выполняет здесь всю тяжелую работу. После того, как мы дали ему знать, где находится наш XSL-файл и передали его XPathDocument, мы можем выполнять преобразование. Dim oXPath As New System.Xml.XPath.XPathDocument(oXR) oXSLT.Transform(oXPath, Nothing, oSW) Catch e As System.Exception ' Добавте дополнительную обработку ошибок здесь Dim x As String = e.ToString() End Try Return oSW.ToString() Обратите внимание, что метод oXSLT.Transform принимает три аргумента, «входящее», список аргументов для XSLT и «исходящее». Мы передаем XPathDocument, в качестве «входящего», NULL, в качестве аргументов, и отправляем преобразованный XML в StringWriter. Не смотря на то, что вы можете использовать перегруженный метод Transform, который непосредственно предоставляет URL XML- и XSL-файлов, я решил вести вас долгим путем выполнения Transform, чтобы вы узнали, что допускает этот объект. ' Создание XsltArgumentList. Dim xslArg As New System.Xml.Xsl.XsltArgumentList() Dim oTime As TimeSpan = DateTime.Now.TimeOfDay xslArg.AddParam("cur_time", "", oTime.ToString()) И в нашей XSL таблице, мы будем ссылаться на наш параметр, который мы передали в нее, так же, как мы полагаемся на скрипт, помещенный в XSL. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="cur_time"/> <xsl:template match="/"> Current Time: <xsl:value-of select="$cur_time"/> </xsl:template> </xsl:stylesheet> Чтобы получить XsltArgumentList в следующем шаге, мы можем обработать условное выражение, основанное на параметрах, которые вы в него передали через XsltArgumentList. Стратегии XML и XSLT
Преобразование по запросуВо время использования стратегии Преобразования по Запросу, HTML- или ASPX-страницы создаются динамически, применяя таблицы стилей XSL к XML-документу и используя преобразование объекта для создания исходящего документа. Когда пользователь обращается с запросом к вашему веб-сайту объект XSL преобразования используется для форматирования ресурса согласно разметке XSL-документа. Вы можете пользоваться этой стратегией, если создаете XML-документ используя метод System.Data.SqlClient.WriteXML(), основанный на динамическом запросе вашего конечного пользователя, если ваши XML- или XSL-документы создаются на лету, или если вам нужно передать конечному пользователю абсолютно динамичную информацию. Фабрика ПреобразованийВ Фабрике Преобразований HTML- и ASPX-страницы создаются из XML и XSLT и сохраняются, как «статичные» страницы. Используя Фабрику Преобразований, вы можете создавать сотни статичных страниц из динамичных источников и сохранять результаты создания этих страниц по запросу. Вы можете настроить Фабрику Преобразований на обработку тысяч XML-файлов, применяя XSL и сохраняя результаты в HTML, ASPX или любом другом формате по вашему желанию. Конечные пользователи будут подключаться к этим «статичным» страницам без передачи «запроса» на XSL Преобразование. Вы можете захотеть применить эту стратегию, если вы не хотите создать впечатление, что ваш веб-сайт или информация, изменяется. Нет необходимости применять XSL к XML всякий раз, когда конечный пользователь обращается с запросом к ресурсу на вашем сайте. Кэшированные ПреобразованияКэшированное преобразование - это простое преобразование, которое происходит по установленному графику, скажем, раз в 24 часа. Результат XSL Преобразования кэшируется на день, или до тех пор, пока он нужен, и предоставляется конечному пользователю. На самых «динамичных» сайтах эта стратегия может иметь место пока вам не нужно выдать динамичную информацию, которая должна быть сиюминутной - как информация, необходимая приложению на фондовой бирже. Большинство задач нуждается в кэшировании информации один или два раза в день. Просто кэшируйте каждую страницу по истечению 24 часов после кэширования. Так же вы можете создать зависимость от любого файла (в данном случае от XML-файла), чтобы в случае изменения файла, ваш кэш обновлял информацию об обновленном файле. В заключении, XSL-преобразование является очень искусной и нужной технологией. Этот мощный инструмент позволяет вам создать перевес входящего над исходящим - давая необходимый отдых вашему корпоративному бумажнику. [Оригинал статьи] Перевод с английского: Виталий Готовцов
|
|