2009-04-24 6 views
2

그래서 빠른 유틸리티를 사용하여 TMX 파일을 간단하게 편집 할 수 있습니다. TMX는 기본적으로 다국어 번역을 저장하기위한 XML 기반 표준입니다. Anyhoo, File 참조를 통해 TMX를 Adobe AIR 응용 프로그램으로 가져온 다음 파일 스트림을 잡아서 UTF-8 문자를 문자열로 끈 다음 XML 객체로 문자열을 가져옵니다. 예 :Flex 3 XML 구현시 오류가 있습니까? xml : lang 다시 쓰기

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이로 해석 :

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

오 호 흥미로운! 속성 xml:langaaa:lang="en" xmlns:aaa="http://www.w3.org/XML/1998/namespace"이됩니다. 내 간단한 연구에서,이 일에 대한 선례가 있지만, 그것은 다소 짜증나는 가정입니다. 과도한 문자열 교체 규칙을 만들지 않고도이를 피할 수있는 방법이 있습니까?

답변

1

다음 중 하나를 사용해 보셨습니까?

default xml namespace = xml; 

또는, Namespaces 문서를 통해

use namespace xml; 

이동합니다.

1

죄송합니다. 아직 여기에 댓글을 달 수 없으므로 여기에 설명해 드리겠습니다.

기본 네임 스페이스와 XML에 기본이 아닌 네임 스페이스를 추가하지 않을 때 내가 복제 할 수 있습니다 :

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

출력이 <node aaa:base="myvalue" xmlns="http://namespacehere.org" xmlns:aaa="http://www.w3.org/XML/1998/namespace"/>

use namespace ns 추가 효과 및 기본 네임 스페이스를했다가 (그것을 적용 할 수 없습니다 접두어를 붙일 필요가있다).

나는이 문제에 대해 몇 번이나 언급했지만 그 원인을 파악하지 못했습니다. 참고 : 네임 스페이스에 설정 한 접두사 나 URI에 관계없이 접두어가 "aaa"로 끝납니다. 이상한.