Ошибки в реализации Flex 3 XML? Переписать xml: lang - PullRequest
2 голосов
/ 24 апреля 2009

Итак, я работаю над быстрой утилитой, которая позволяет легко редактировать файлы TMX. TMX - это стандарт на основе XML для хранения многоязычных переводов. В любом случае, я импортирую TMX в приложение Adobe AIR через ссылку на файл, затем собираю поток файлов, добавляю символы UTF-8 в строку, а затем эту строку в объект XML. Так:

var stream:FileStream = new FileStream();
stream.open(event.target /*file data*/ as File, FileMode.READ);
var fileData:String = stream.readUTFBytes(stream.bytesAvailable);
var tmxXml:XML = new XML(fileData);

Но вот интересная часть. Если fileData загружено так:

<tuv xml:lang="en">
    <seg>About Us</seg>
</tuv>

XML-код Flex интерпретирует его следующим образом:

<tuv aaa:lang="en" xmlns:aaa="http://www.w3.org/XML/1998/namespace">
    <seg>
        About Us
    </seg>
</tuv>

Ой, интересно! Атрибут xml:lang становится aaa:lang="en" xmlns:aaa="http://www.w3.org/XML/1998/namespace". Из моего краткого исследования, есть некоторый прецедент для этого, но это несколько неудачное предположение. Без создания чрезмерных правил замены строк, есть ли способ обойти это?

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Извините, не можете комментировать (пока?), Поэтому я положу это здесь.

Я могу реплицировать при добавлении пространства имен не по умолчанию в XML с пространством имен по умолчанию:

var node:XML = <node xmlns="http://namespacehere.org"/>
var ns:Namespace = new Namespace("xml", "http://www.w3.org/XML/1998/namespace");
node.@ns::base = "myvalue";

Вывод <node aaa:base="myvalue" xmlns="http://namespacehere.org" xmlns:aaa="http://www.w3.org/XML/1998/namespace"/>

Добавление use namespace ns не имеет никакого эффекта, а пространство имен по умолчанию неприменимо (необходимо добавить префикс).

Я сталкивался с этой проблемой несколько раз, но не смог выделить причину. Примечание: каждый по-прежнему заканчивается префиксом «aaa» независимо от того, какой префикс или URI вы задали в пространстве имен. Одд.

1 голос
/ 24 апреля 2009

Вы пытались использовать один из следующих?

 default xml namespace = xml;

или

 use namespace xml;

Просмотрите документацию Пространства имен .

...