Как я проверяю XML-документ, использующий компактный, ОСЛАБЛЯЮТ схему NG в Python?

Я предлагаю, чтобы Вы сделали это на своих статических страницах прежде, чем представить к браузеру, или Вы будете продвигать нагрузку вычисления преобразования на Ваших бедных посетителей.:) Вот то, как Вы могли бы сделать это в Ruby (читающий из stdin, пишущий в stdout):

while line = gets
  puts line.gsub( /(^|[^"'])(http\S+)/, "\\1\\2" )
end

, Очевидно, Вы захотите думать о том, как сделать это столь устойчивым, как Вы требуете. Вышеупомянутое требует, чтобы все URL запустились с http и проверит для не преобразования URL, которые находятся в кавычках (т.е. который может уже быть в < href = "..." >). Это не поймает ftp://, mailto:. Это счастливо преобразует материал в местах как < script> тела, которые Вы не можете хотеть происходить.

самое удовлетворительное решение состоит в том, чтобы действительно сделать преобразование вручную с Вашим редактором, таким образом, Вы можете глазное яблоко и утверждать все замены. А хороший редактор позволит Вам сделать regexp замену со ссылками группы (иначе обратные ссылки), таким образом, это не должно быть грандиозное предприятие.

8
задан Jean-Francois T. 24 December 2018 в 03:40
поделиться

1 ответ

Как насчет использования lxml ?

Из документации:

>>> f = StringIO('''\
... <element name="a" xmlns="http://relaxng.org/ns/structure/1.0">
...  <zeroOrMore>
...     <element name="b">
...       <text />
...     </element>
...  </zeroOrMore>
... </element>
... ''')
>>> relaxng_doc = etree.parse(f)
>>> relaxng = etree.RelaxNG(relaxng_doc)

>>> valid = StringIO('<a><b></b></a>')
>>> doc = etree.parse(valid)
>>> relaxng.validate(doc)
True

>>> invalid = StringIO('<a><c></c></a>')
>>> doc2 = etree.parse(invalid)
>>> relaxng.validate(doc2)
False
16
ответ дан 5 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: