리비전 비교

Migrate apps from Internet Explorer to Mozilla

리비전 121973:

리비전 121973 Redleaf

리비전 121974:

리비전 121974 Redleaf

제목:
Migrate apps from Internet Explorer to Mozilla
Migrate apps from Internet Explorer to Mozilla
슬러그:
Migrate_apps_from_Internet_Explorer_to_Mozilla
Migrate_apps_from_Internet_Explorer_to_Mozilla
태그:
"Web Development"
"Web Development"
내용:

Revision 121973
Revision 121974
n1532      Mozilla has strong support for XML and XML-related technolon1532      Mozilla는 XSLT과 웹서비스와 같은 XML과 XML관련 기술에 대해 강력한 지원을 한다. Mozil
>gies, such as XSLT and Web services. It also supports some nonsta>la는 XMLHttpRequest과 같은 비표준 IE 확장도 지원한다.
>ndard Internet Explorer extensions, such as XMLHttpRequest. 
1533    </p>
1534    <h4 name="How_to_handle_XML">
1535      How to handle XML
1536    </h4>
1537    <p>1533    </p>
1538      As with standard HTML, Mozilla supports the W3C XML DOM spe1534    <h4 name="XML.EC.9D.84_.EB.8B.A4.EB.A3.A8.EB.8A.94_.EB.B2.95"
>cification, which allows you to manipulate almost any aspect of a>>
>n XML document. Differences between Internet Explorer's XML DOM a 
>nd Mozilla are usually caused by Internet Explorer's nonstandard  
>behaviors. Probably the most common difference is how they handle 
> white space text nodes. Often when XML generates, it contains wh 
>ite spaces between XML nodes. Internet Explorer, when using <code 
>>XMLNode.childNodes[]</code>, will not contain these white space  
>nodes. In Mozilla, those nodes will be in the array. 
1535      XML을 다루는 법
1536    </h4>
1537    <p>
1538      표준 HTML 에서 처럼, Mozilla는 W3C XML DOM 스펙을 지원하며, 이것은 XML 문서의 거
 >의 모든 면을 조작할 수 있게 한다. IE의 XML DOM과 Mozilla의 차이는 보통 IE의 비표준 동작에서 야기
 >된다. 아마도 가장 일반적인 차이점은 공백 텍스트 노드를 어떻게 다루는가 이다. 종종 XML이 생성될 때 XML 노드
 > 사이에 공백이 포함된다. IE는 <code>XMLNode.childNodes[]</code>를 사용할 때 이러한 공
 >백 노드를 포함하지 않는다. 그러나 Mozilla에서는 이 노드들이 배열에 들어간다.
n1552      The first line of JavaScript loads the XML document and accn1552      자바스크립트의 첫번째 라인이 XML 문서를 로드하고 <code>documentElement</code>를 
>esses the root element (<code>myXMLDoc</code>) by retrieving the >탐색하여 루트 앨리먼트 (<code>myXMLDoc</code>)에 접근한다. 두번째 라인은 단순히 자식 노드의 수를
><code>documentElement</code>. The second line simply alerts the n> 얼럿창에 띄운다. W3C 스펙에 따르면 공백과 줄바꿈은 서로 붙어 있을시 하나의 텍스트 노드로 합쳐진다. Mozil
>umber of child nodes. Per the W3C specification, the white spaces>la의 경우에 <code>myXMLdoc</code> 노드는 세개의 자식을 가진다: 줄바꿈과 두개의 스페이스를 가진 
> and new lines merge into one text node if they follow each other>텍스트 노드, <code>myns:foo</code>노드, 줄바꿈을 가진 또 하나의 텍스트 노드. 그러나, IE는 이
>. For Mozilla, the <code>myXMLdoc</code> node has three children:>것을 지키지 않고 위의 코드에 대해 1, 즉 <code>myns:foo</code> 노드만을 리턴한다. 그러므로 자식
> a text node containing a new line and two spaces; the <code>myns>노드를 취하고 텍스트 노드를 버리기 위해, 이러한 노드들을 구별해 내야 한다.
>:foo</code> node; and another text node with a new line. Internet 
> Explorer, however, does not abide by this and will return "1" fo 
>r the above code, namely only the <code>myns:foo</code> node. The 
>refore, to walk the child nodes and disregard text nodes, you mus 
>t distinguish such nodes. 
1553    </p>
1554    <p>1553    </p>
1555      As mentioned earlier, every node has a <code>nodeType</code1554    <p>
>> attribute representing the node type. For example, an element n 
>ode has type 1, while a document node has type 9. To disregard te 
>xt nodes, you must check for types 3 (text node) and 8 (comment n 
>ode). 
1555      앞서 언급했던 것처럼 모든 노드는 노드 타입을 가리키는 <code>nodeType</code> 속성을 가진
 >다. 예를 들어, 엘리먼트 노드는 타입 1이고, 도큐먼트 노드는 타입 9이다. 텍스트 노드를 무시하기 위해서는 반드시
 > 타입 3(텍스트 노드)와 8(주석 노드)를 체크해야 한다.
n1575    <h4 name="XML_data_islands">n
1576      XML data islands
1577    </h4>
1578    <p>
1579      Internet Explorer has a nonstandard feature called <em>XML 
>data islands</em>, which allow you to embed XML inside an HTML do 
>cument using the nonstandard HTML tag <code>&lt;xml&gt;</code>. M 
>ozilla does not support XML data islands and handles them as unkn 
>own HTML tags. You can achieve the same functionality using XHTML 
>; however, because Internet Explorer's support for XHTML is weak, 
> this is usually not an option. 
1580    </p>1575    <p>
1576      더 자세한 사항과 해결방안은 다음을 참고하라: <a href="ko/Whitespace_in_the_DOM
 >">Whitespace in the DOM</a>
1581    <p>1577    </p>
1582      One cross-browser solution is to use DOM parsers, which par1578    <h4 name="XML_.EB.8D.B0.EC.9D.B4.ED.84.B0_.EC.95.84.EC.9D.BC.
>se a string that contains a serialized XML document and generates>EB.9E.9C.EB.93.9C">
> the document for the parsed XML. Mozilla uses the <code>DOMParse 
>r</code> class, which takes the serialized string and creates an  
>XML document out of it. In Internet Explorer, you can achieve the 
> same functionality using ActiveX. A new <code>Microsoft.XMLDOM</ 
>code> generates and has a <code>loadXML</code> method that can ta 
>ke in a string and generate a document from it. The following cod 
>e shows you how: 
1579      XML 데이터 아일랜드
1580    </h4>
1583    </p>1581    <p>
1582      IE는 <em>XML 데이터 아일랜드</em>라 불리우는 비표준 기능을 가지고 있는데 이것은 비표준 HTM
 >L 태그인 <code>&lt;xml&gt;</code> 을 사용하여 HTML 문서내에 XML을 포함할 수 있게 한다.
 > Mozilla는 XML 데이터 아일랜드를 지원하지 않으며 이것을 인식되지 않는 HTML 태그로 취급한다. 같은 기능
 >을 XHTML을 사용하여 이룰 수 있지만, IE의 XHTML 지원은 미약하기 때문에 이것은 보통 추가적인 것은 아니다
 >.
1583    </p>
1584    <pre>1584    <p>
1585IE XML data island: 1585      IE의 XML 데이터 아일랜드:
1586  .. 1586    </p>
1587    <pre class="eval">
1587  &lt;xml id="xmldataisland"&gt; 1588&lt;xml id="xmldataisland"&gt; 
1588    &lt;foo&gt;bar&lt;/foo&gt; 1589  &lt;foo&gt;bar&lt;/foo&gt; 
1589  &lt;/xml&gt;1590&lt;/xml&gt;
1590 1591</pre>
1591Cross-browser solution: 1592    <p>
1593      크로스 브라우징 해결 방법 중의 하나는 DOM 파서를 이용하는 것인데 이것은 직렬화된 XML 문서를 포함한
 > 문자열을 파싱하고 파싱된 XML에 대한 문서를 생성한다. Mozilla는 <code><a href="ko/DOMPa
 >rser">DOMParser</a></code> 오브젝트를 사용하며, 이는 직렬화된 문자열을 가지고 외부로 XML 문
 >서를 생성한다. IE에서는 같은 기능을 ActiveX를 사용하여 만들수 있다. <code>new ActiveXObje
 >ct("Microsoft.XMLDOM")</code>를 사용하여 생성한 오브젝트는 문자열을 가지고 문서를 생성하는 <
 >code>loadXML</code> 메소드를 가진다. 다음 코드가 그 방법을 보여준다:
1594    </p>
1595    <pre class="eval">
1592  var xmlString = "&lt;xml id=\"xmldataisland\"&gt;&lt;foo&gt;bar1596 var xmlString = "&lt;xml id=\"xmldataisland\"&gt;&lt;foo&gt;bar&
>&lt;/foo&gt;&lt;/xml&gt;"; >lt;/foo&gt;&lt;/xml&gt;"; 
1593 1597</pre>
1598    <pre class="eval">
1594  var myDocument; 1599 var myDocument; 
1595 1600</pre>
1601    <pre class="eval">
1596  if (document.implementation.createDocument){ 1602 if (document.implementation.createDocument){ 
1597    // Mozilla, create a new DOMParser 1603   // Mozilla, create a new DOMParser 
1598    var parser = new DOMParser(); 1604   var parser = new DOMParser(); 
1599    myDocument = parser.parseFromString(xmlString, "text/xml"); 1605   myDocument = parser.parseFromString(xmlString, "text/xml"); 
1600  } else if (window.ActiveXObject){ 1606 } else if (window.ActiveXObject){ 
1601    // Internet Explorer, create a new XML document using ActiveX1607   // Internet Explorer, create a new XML document using ActiveX 
>  
1602    // and use loadXML as a DOM parser. 1608   // and use loadXML as a DOM parser. 
1603    myDocument = new ActiveXObject("Microsoft.XMLDOM"); 1609   myDocument = new ActiveXObject("Microsoft.XMLDOM"); 
1604    myDocument.async="false"; 1610   myDocument.async="false"; 
1605 1611</pre>
1612    <pre class="eval">
1606    myDocument.loadXML(xmlString);1613   myDocument.loadXML(xmlString);
1607  }1614 }
nn1616    <p>
1617      &lt;/pre&gt;
1618    </p>
1619    <p>
1620      다른 대안은 다음을 참고하라: <a href="ko/Using_XML_Data_Islands_in_Mozi
 >lla">Using XML Data Islands in Mozilla</a>
1621    </p>
n1613      Internet Explorer allows you to send and retrieve XML filesn1626      IE는 MSXML의 <code>XMLHTTP</code> 클래스를 사용하여 XML 파일을 보내거나 탐색할 
> using MSXML's <code>XMLHTTP</code> class, which is instantiated >수 있게 하는데, 이것은 <code>new ActiveXObject("Msxml2.XMLHTTP")</code> 또는
>through ActiveX using <code>new ActiveXObject("Msxml2.XMLHTTP")</> <code>new ActiveXObject("Microsoft.XMLHTTP")</code>를 사용한 ActiveX
>code> or <code>new ActiveXObject("Microsoft.XMLHTTP")</code>. Sin>를 통해 인스턴스화 된다. 이러한 것에 대해 표준이 존재하지 않기 때문에, Mozilla는 같은 기능에 대해 전역 자
>ce there is no standard method of doing this, Mozilla provides th>바스크립트 객체인 <code><a href="ko/XMLHttpRequest">XMLHttpRequest</a></c
>e same functionality in the global JavaScript <code>XMLHttpReques>ode>에서 이를 제공한다. IE도 역시 버전 7 부터는 원시 <code>XMLHttpRequest</code> 오브
>t</code> object. The object generates asynchronous requests by de>젝트를 지원한다.
>fault. 
1614    </p>
1615    <p>1627    </p>
1616      After instantiating the object using <code>new XMLHttpReque
>st()</code>, you can use the <code>open</code> method to specify  
>what type of request (GET or POST) you use, which file you load,  
>and if it is asynchronous or not. If the call is asynchronous, th 
>en give the <code>onload</code> member a function reference, whic 
>h is called once the request has completed. 
1617    </p>1628    <p>
1629      <code>new XMLHttpRequest()</code>를 사용하여 오브젝트를 인스턴스화 한 뒤에는 어
 >떤 타입의 요청(GET 혹은 POST)을 사용할 것인지, 어느 파일을 로드할 것인지, 비동기인지 아닌지를 지정하기 위
 >한 <code>open</code> 메소드를 사용할 수 있다. 만약 호출이 비동기이면 <code>onload</cod
 >e> 멤버에 함수 레퍼런스를 준다. 이것은 요청이 완료 되었을때 한번 호출된다.
1618    <p>1630    </p>
1619      Synchronous request:1631    <p>
1632      동기 요청:
n1630      Asynchronous request:n1643      비동기 요청:
n1650      Table 7 features a list of available methods and propertiesn1663      표 7은 Mozilla의 <code>XMLHttpRequest&lt;/code에 대해 사용가능한 메소드와 
> for Mozilla's <code>XMLHttpRequest</code>.>속성들의 리스트이다.</code>
n1654        Table 7. XMLHttpRequest methods and propertiesn1667         7. XMLHttpRequest methods and properties
n1821      Mozilla supports XSL Transformations (XSLT) 1.0. It also aln1834      Mozilla는 XSL 변환 (XSLT) 1.0을 지원한다. Mozilla는 또한 자바스크립트로 XSLT 
>lows JavaScript to perform XSLT transformations and allows runnin>변환을 실행하는 것을 지원하고 문서상에서 XPath를 실행 하는 것도 지원한다.
>g XPATH on a document. 
1822    </p>
1823    <p>1835    </p>
1824      Mozilla requires that you send the XML and XSLT file holdin
>g the stylesheet with an XML mimetype (<code>text/xml</code> or < 
>code>application/xml</code>). This is the most common reason why  
>XSLT won't run in Mozilla but will in Internet Explorer. Mozilla  
>is strict in that way. 
1825    </p>1836    <p>
1837      Mozilla에서는 XML 이나 XSLT 파일을 보낼때 XML mimetype (&lt;code&gt;te
 >xt/xml or <code>application/xml</code>)을 사용해야 한다. 이것이 왜 XSLT가 Moz
 >illa에서는 실행되지 않는데 IE에서는 실행되는 가에 대한 가장 일반적인 이유이다. Mozilla는 이런식으로 엄격
 >하다.
1826    <p>1838    </p>
1827      Internet Explorer 5.0 and 5.5 supported XSLT's working draf
>t, which is substantially different than the final 1.0 recommenda 
>tion. The easiest way to distinguish what version an XSLT file wa 
>s written against is to look at the namespace. The namespace for  
>the 1.0 recommendation is <code><span class="plain">http://www.w3 
>.org/1999/XSL/Transform</span></code>, while the working draft's  
>namespace is <code><span class="plain">http://www.w3.org/TR/WD-xs 
>l</span></code>. Internet Explorer 6 supports the working draft f 
>or backwards compatibility, but Mozilla does not support the work 
>ing draft, only the final recommendation. 
1828    </p>1839    <p>
1840      IE 5.0과 5.5는 XSLT의 working draft를 지원했는데 이것은 final 1.0 recom
 >mendation과는 상당히 차이가 있었다. XSLT가 어느 버전으로 쓰였는지 구별할 수 있는 가장 쉬운 방법은 네임
 >스페이스를 보는 것이다. 1.0 권고안의 네임스페이스는 <code><span class="plain">http://w
 >ww.w3.org/1999/XSL/Transform</span></code>인 반면, working draft의 네임
 >스페이스는 <code><span class="plain">http://www.w3.org/TR/WD-xsl</span
 >></code>이다. IE 6은 하위 호환성을 위하여 working draft를 지원한다. 그러나 Mozilla는 w
 >orking draft를 지원하지 않고 최종 권고안만을 지원한다.
1829    <p>1841    </p>
1830      If XSLT requires you to distinguish the browser, you can qu1842    <p>
>ery the "xsl:vendor" system property. Mozilla's XSLT engine will  
>report itself as "Transformiix" and Internet Explorer will return 
> "Microsoft." 
1843      만약 XSLT에서 브라우저를 구별해야 한다면 "xsl:vendor" 시스템 속성으로 알아낼 수 있다. Mo
 >zilla의 XSLT엔진은 "Transformiix"라고 표시하겠지만 IE는 "Microsoft"를 반환할 것이다.
n1841      Mozilla also provides JavaScript interfaces for XSLT, allown1854      Mozilla는 XSLT에 대한 자바스크립트 인터페이스도 지원하며 이것은 웹사이트가 메모리 상에서 XSLT
>ing a Web site to complete XSLT transformations in memory. You ca> 변환을 완료할 수 있게 한다. 이것은 자바스크립트 전역 오브젝트인 <code>XSLTProcessor</code>를
>n do this using the global <code>XSLTProcessor</code> JavaScript > 사용하여 할 수 있다. <code>XSLTProcessor</code>는 XML과 XSLT 파일을 로드해야 하는데,
>object. <code>XSLTProcessor</code> requires you to load the XML a> 이것은 DOM 도큐먼트가 필요하기 때문이다. <code>XSLTProcessor</code>에 의해 임포트된 XSL
>nd XSLT files, because it needs their DOM documents. The XSLT doc>T 문서는 XSLT 파라미터들을 조작할 수 있게 한다.
>ument, imported by the <code>XSLTProcessor</code>, allows you to  
>manipulate XSLT parameters. <code>XSLTProcessor</code> can genera 
>te a standalone document using <code>transformToDocument()</code> 
>, or it can create a document fragment using <code>transformToFra 
>gment()</code>, which you can easily append into another DOM docu 
>ment. Below is an example: 
1855    </p>
1856    <p>
1857      XSLTProcessor 는 <code>transformToDocument()</code>를 사용하여 단독
 > 도큐먼트를 생성하거나 <code>transformToFragment()</code>를 사용하여 도큐먼트 프래그먼트를
 > 생성할 수 있다. 이것은 다른 DOM 문서에 쉽게 추가할 수 있다. 다음의 예를 보자:
n1867      After creating an <code>XSLTProcessor</code>, you load the n1883      <code>XSLTProcessor</code>를 생성한 후에는 <code>XMLHttpRequest</c
>XSLT file using <code>XMLHttpRequest</code>. The XMLHttpRequest's>ode>를 사용하여 XSLT 파일을 로드한다. XMLHttpRequest의 <code>responseXML</code
> <code>responseXML</code> member contains the XML document of the>> 멤버는 XSLT파일의 XML 문서를 포함하는데, 이는 <code>importStylesheet</code>로 전달
> XSLT file, which is passed to <code>importStylesheet</code>. You>된다. 그리고 나서 <code>XMLHttpRequest</code>를 다시 사용하여 변환되어야 하는 원본 XML 문
> then use the <code>XMLHttpRequest</code> again to load the sourc>서를 로드한다. 이 문서는 이제 <code>XSLTProcessor</code>의 <code>transformToDo
>e XML document that must be transformed; that document is then pa>cument</code> 멤버로 전달된다. 표 8은 <code>XSLTProcessor</code> 메소드의 리스트이
>ssed to the <code>transformToDocument</code> method of <code>XSLT>다.
>Processor</code>. Table 8 features a list of <code>XSLTProcessor< 
>/code> methods. 
t1871        Table 8. XSLTProcessor methodst1887         8. XSLTProcessor methods

이력으로 돌아가기