Поделиться через


Входные данные для класса XslCompiledTransform

Метод Transform принимает три входных типа для документа источника: объект, реализующий интерфейс IXPathNavigable, объект XmlReader, который считывает документ источника, и строку URI.

Примечание.

Класс XslCompiledTransform сохраняет пробелы по умолчанию. Это соответствует разделу 3.4 рекомендации W3C XSLT 1.0.

Интерфейс IXPathNavigable

Интерфейс IXPathNavigable реализован в классах XmlNode и XPathDocument. Эти классы представляют хранящийся в памяти кэш XML-данных.

  • Класс XmlNode основан на модели W3C DOM и позволяет вносить изменения.

  • Класс XPathDocument представляет собой доступное только для чтения хранилище данных на основе модели данных XPath. Класс XPathDocument рекомендуется для обработки XSLT. Он обеспечивает более высокую производительность по сравнению с классом XmlNode.

Примечание.

Преобразования применяются к документу в целом. Иными словами, если передать узел, отличный от корневого узла документа, это не помешает процессу преобразования обратиться ко всем узлам загружаемого документа. Чтобы преобразовать фрагмент узла, необходимо создать объект, содержащий только фрагмент этого узла, и передать его методу Transform. См. дополнительные сведения о преобразовании фрагментов узлов.

В следующем примере метод XslCompiledTransform.Transform используется для преобразования файла books.xml в books.html с помощью таблицы стилей transform.xsl. Файлы books.xml и transform.xsl можно найти в руководстве по преобразованию XSLT с использованием сборки.

// Open books.xml as an XPathDocument.
XPathDocument doc = new XPathDocument("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(doc, writer);
' Open books.xml as an XPathDocument.
Dim doc As XPathDocument = New XPathDocument("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

'Execute the transformation.
transform.Transform(doc, writer)

Объект XmlReader

Метод Transform загружает из текущего узла объекта XmlReader всех его потомков. Это позволяет использовать фрагмент документа в качестве контекстного документа. После возвращения метода Transform объект XmlReader позиционируется на следующем узле за контекстным документом. По достижении конца документа объект XmlReader позиционируется в конец файла (EOF).

В следующем примере метод XslCompiledTransform.Transform используется для преобразования файла books.xml в books.html с помощью таблицы стилей transform.xsl. Файлы books.xml и transform.xsl можно найти в руководстве по преобразованию XSLT с использованием сборки.

// Create a reader to read books.xml
XmlReader reader = XmlReader.Create("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(reader, writer);
'Create a reader to read books.xml
Dim reader As XmlReader = XmlReader.Create("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform(reader, writer)

Строковые URI

Можно также указать URI исходного документа в виде входных данных XSLT. Для разрешения URI используется объект XmlResolver. Чтобы использовать объект XmlResolver, нужно передать его методу Transform. Если объект XmlResolver не указан, метод Transform использует объект XmlUrlResolver по умолчанию без учетных данных.

В следующем примере метод XslCompiledTransform.Transform используется для преобразования файла books.xml в books.html с помощью таблицы стилей transform.xsl. Файлы books.xml и transform.xsl можно найти в руководстве по преобразованию XSLT с использованием сборки.

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform("books.xml", "books.html");
' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform("books.xml", "books.html")

См. дополнительные сведения о разрешении внешних ресурсов в ходе обработки XSLT.

См. также