Причина, по которой ваша функция не работает: расширение расширяет массив на месте и не возвращает его. Вы можете вернуть x из лямбда, используя некоторый трюк:
reduce(lambda x,y: x.extend(y) or x, l)
Примечание: расширение более эффективно, чем + в списках.
Пока XML не содержит </script>
в любом месте, вы можете поместить его внутри тегов скрипта с помощью специального атрибута type
(и без раздела CDATA). Дайте тегу скрипта атрибуту id
, чтобы вы могли получить контент.
<script id="myxml" type="text/xmldata">
<x>
<y z="foo">
</y>
</x>
</script>
...
<script> alert(document.getElementById('myxml').innerHTML); </script>
В соответствии с учебником здесь вы можете использовать тег «xml» для вставки XML-данных в HTML-документ. Тем не менее, это неявно отображает XML-данные в браузере.
http://www.expertrating.com/courseware/XMLCourse/XML-Embedding-HTML-8.asp
Как насчет:
<script>
var xml = '<element> \
<childElement attr="value" /> \
</element>';
</script>
Это позволит вам легко вставлять XML для последующего извлечения в javascript.