2017-02-07 9 views
0

Мне нужно найти решение для исправления с помощью XSLT 1! Большинство отправленных XML-файлов хорошо отформатированы, и кто-то делает беспорядок, добавляя символы (& <>..). Любой способ сделать это на моей стороне? Я попытался XSLT 2 и заменить функция не работает, как я использую процессор XSLT от MicrosoftXSLT 1 - Как заменить '&' на '&' в XML-файле?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:saxon="http://saxon.sf.net/" 
    exclude-result-prefixes="xs saxon" 
    version="2.0"> 
<xsl:param name="path" select="'file:///E:/foo.xml'"></xsl:param> 
<xsl:template match="/"> 
<xsl:copy-of select="unparsed-text($path)"></xsl:copy-of> 
<xsl:copy-of select="saxon:parse(replace(unparsed-text($path), '&amp;',  '&amp;amp;'))"/> 
</xsl:template> 
</xsl:stylesheet> 

Любое другое предложение, как решить эту проблему. например, у меня есть входной XML-файл, как:

<?xml version="1.0" encoding="UTF-8"?> 
    <name>Stack & Exchange</name> 

И обязательно на «&» характер.

Прошу совета! Спасибо

+0

Что не работает по этому поводу? –

+1

Функция 'replace()' может быть заменена рекурсивным именованным шаблоном. Но если ваш вход не XML, вы не сможете преобразовать его с процессором XSLT 1.0 вообще. В XSLT 1.0 нет 'unparsed-text()'. –

+0

Входной файл xml ** недействителен ** кто бы ни передал его вам, вы не можете требовать доставки xml - получите исправление. –

ответ

0

Заключение

Два наблюдения

  • XSLT требует, по крайней мере, хорошо сформированный документ XML на входе, так что я не могу использовать его, чтобы исправить недопустимый XML (это XML язык трансформации)
  • , чтобы использовать замену или удаление недопустимых символов XML на входе Мне нужно убедиться, что я использую процессор XSLT 2.0 (я использую процессор Microsoft XSLT 1.0)

Я вижу два варианта

  • Если я получаю сообщение об ошибке при вводе, исследовать и проверять вручную и отправить обратно сообщение об ошибке. ЭТО, ЧТОБЫ ИЗБЕЖАТЬ! (Используйте текстовые инструменты, такие как блокнот ++, преуспевайте, чтобы найти проблему).
  • написать корректирующий анализатор на языке .net исправить перед загрузкой в ​​XML
Смежные вопросы