JavaRush /Java Blog /Random-KO /Java 프로그래머를 위한 XML 기초. 3부 중 2부
Ярослав
레벨 40
Днепр

Java 프로그래머를 위한 XML 기초. 3부 중 2부

Random-KO 그룹에 게시되었습니다

소개

안녕하세요, 내 기사의 독자 여러분. 이 기사는 XML 시리즈의 두 번째 기사이며, 이 기사에서는 XML 네임스페이스와 XML 스키마에 대해 설명합니다.
XML 기초
최근에 나 자신은 이것에 대해 전혀 몰랐지만 많은 자료를 습득했으며 이 두 가지 중요한 주제를 간단한 단어로 설명하려고 노력할 것입니다. 나는 스키마가 XML 문서의 유효성을 검사하는 매우 진보된 메커니즘이고 DTD보다 훨씬 더 기능적이므로 여기서는 스키마에 대한 완전한 연구가 없을 것이라고 즉시 말하고 싶습니다. 시작하자 :)

XML 네임스페이스

네임스페이스는 "이름 공간"을 의미하지만 이 기사에서는 러시아어 표현을 단순히 네임스페이스로 바꾸는 경우가 많습니다. 더 짧고 이해하기 쉽기 때문입니다. XML 네임스페이스는 XML 파일의 모든 요소가 고유하고 혼동이 없는지 확인하는 것이 주요 목적인 기술입니다. 그리고 이는 Java 강좌이므로 Java 패키지에서도 동일한 기술을 사용할 수 있습니다. 같은 이름을 가진 두 개의 클래스를 나란히 배치하여 사용할 수 있다면 어떤 클래스가 필요한지 어떻게 판단할 수 있을까요? 이 문제는 패키지로 해결됩니다. 원하는 패키지의 정확한 이름과 경로를 지정하거나 간단히 원하는 클래스의 전체 경로를 지정하여 클래스를 다른 패키지에 배치하고 거기에서 가져올 수 있습니다. Java 프로그래머를 위한 XML 기초.  3부 중 2부 - 1이제 다음과 같이 할 수 있습니다.
public class ExampleInvocation {
    public static void main(String[] args) {
        // Creation экземпляра класса из первого пакета.
        example_package_1.Example example1 = new example_package_1.Example();

        // Creation экземпляра класса из второго пакета.
        example_package_2.Example example2 = new example_package_2.Example();

        // Creation экземпляра класса из третьего пакета.
        example_package_3.Example example3 = new example_package_3.Example();
    }
}
XML 네임스페이스에서는 모든 것이 거의 동일하며 약간만 다릅니다. 본질은 동일합니다. 요소가 동일하면(클래스와 같이) 다른 네임스페이스에서 사용해야 하며(패키지 지정) 요소(클래스)의 이름이 일치하기 시작하더라도 여전히 공간(패키지)에서 특정 요소에 액세스합니다. 예를 들어 XML에는 예측(oracle)과 Oracle 데이터베이스라는 두 가지 요소가 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <oracle>
        <connection value="jdbc:oracle:thin:@10.220.140.48:1521:test1" />
        <user value="root" />
        <password value="111" />
    </oracle>

    <oracle>
        Сегодня вы будете заняты весь день.
    </oracle>
</root>
그리고 이 XML 파일을 처리할 때 데이터베이스 대신 예측을 수신하고 수신하는 경우 심각하게 혼란스러울 것입니다. 요소의 충돌을 해결하기 위해 각 요소를 구별할 수 있는 고유한 공간을 할당할 수 있습니다. 이에 대한 특별한 속성이 있습니다 – xmlns:prefix= “네임스페이스에 대한 고유 값”. 그런 다음 해당 요소가 해당 네임스페이스의 일부임을 나타내기 위해 요소 앞에 접두사를 붙일 수 있습니다(기본적으로 패키지 경로(네임스페이스)를 만든 다음 해당 요소가 속한 패키지를 각 요소 앞에 붙여야 합니다).
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <database:oracle xmlns:database="Unique ID #1">
        <connection value="jdbc:oracle:thin:@10.220.140.48:1521:test1" />
        <user value="root" />
        <password value="111" />
    </database:oracle>

    <oracle:oracle xmlns:oracle="Unique ID #2">
        Сегодня вы будете заняты весь день.
    </oracle:oracle>
</root>
이 예에서는 데이터베이스와 oracle이라는 두 개의 네임스페이스를 선언했습니다. 이제 요소 앞에 네임스페이스 접두사를 사용할 수 있습니다. 지금은 불분명한 것이 있어도 겁낼 필요가 없습니다. 사실, 그것은 매우 간단합니다. 처음에는 기사의 이 부분을 더 빨리 쓰고 싶었지만 수요일 이후에는 혼란스럽거나 이해하지 못하는 것이 쉽기 때문에 이 주제에 더 주의를 기울여야 한다고 결정했습니다. 이제 xmlns 속성에 많은 관심을 기울일 것입니다. 또 다른 예는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.fish-shop.com/">
    <gun:shop>
        <gun:guns>
            <gun:gun name="Revolver" price="1250$" max_ammo="7" />
            <gun:gun name="M4A1" price="3250$" max_ammo="30" />
            <gun:gun name="9mm Pistol" price="450$" max_ammo="12" />
        </gun:guns>
    </gun:shop>

    <fish:shop>
        <fish:fishes>
            <fish:fish name="Shark" price="1000$" />
            <fish:fish name="Tuna" price="5$" />
            <fish:fish name="Capelin" price="1$" />
        </fish:fishes>
    </fish:shop>
</root>
총기 상점 고유 요소에는 스페이스 총, 낚시 상점 고유 요소에는 물고기를 사용하여 일반 XML을 볼 수 있습니다. 공간을 생성함으로써 무기 상점과 생선 상점이라는 두 가지 다른 항목에 대해 하나의 상점 요소를 동시에 사용했음을 알 수 있으며, 공간을 선언했다는 사실 덕분에 어떤 상점인지 정확히 알 수 있습니다. 가장 흥미로운 것은 이러한 방식으로 동일한 요소를 사용하여 다양한 구조를 검증할 수 있는 계획에서 시작됩니다. xmlns는 네임스페이스를 선언하는 속성으로 어떤 요소에도 지정할 수 있습니다. 네임스페이스 선언의 예:
xmlns:shop= «https://barber-shop.com/»
콜론 뒤의 접두사는 공간 참조로, 요소가 해당 공간에서 왔음을 나타내기 위해 요소 앞에 사용할 수 있습니다. xmlns 값은 고유 문자열이어야 합니다. 이는 이해하는 것이 매우 중요합니다. 웹 사이트 링크나 URI를 사용하여 네임스페이스를 선언하는 것은 매우 일반적입니다. 링크의 URI 또는 ​​URL이 고유하기 때문에 이 규칙은 표준이지만, 이 부분이 매우 혼란스럽습니다. 기억하세요: 값은 원하는 모든 문자열이 될 수 있지만 고유하고 표준인지 확인하려면 URL 또는 URI를 사용해야 합니다. 어떤 문자열이든 사용할 수 있다는 사실은 oracle의 예에 나와 있습니다.
xmlns:oracle="Unique ID #2"
xmlns:database="Unique ID #1"
네임스페이스를 선언하면 요소 자체와 그 안에 있는 모든 요소에서 사용할 수 있으므로 루트 요소에 선언된 네임스페이스는 모든 요소에서 사용할 수 있습니다. 이는 마지막 예에서 볼 수 있으며 다음은 보다 구체적인 예입니다.
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <el1:element1 xmlns:el1="Element#1 Unique String">
        <el1:innerElement>

        </el1:innerElement>
    </el1:element1>


    <el2:element2 xmlns:el2="Element#2 Unique String">
        <el2:innerElement>

        </el2:innerElement>
    </el2:element2>


    <el3:element3 xmlns:el3="Element#3 Unique String">
        <el3:innerElement>
            <el1:innerInnerElement> <!-- Так нельзя, потому что пространство el1 объявлено только в первом элементе, потому может использовать только внутри первого element и его внутренних элементов. -->

            </el1:innerInnerElement>
        </el3:innerElement>
    </el3:element3>
</root>
중요한 세부 사항은 다음과 같습니다. 루트 요소에도 표준 네임스페이스가 있습니다. 다른 네임스페이스를 선언하면 기본 네임스페이스를 재정의하고 사용할 수 없습니다. 그런 다음 이전에 선언한 루트 요소 앞에 일종의 공백 접두사를 넣어야 합니다. 그러나 이는 속일 수도 있습니다. 표준 공간을 명시적으로 선언할 수 있습니다. xmlns 뒤에 접두사를 사용하지 않고 즉시 일부 값을 적어두면 충분하며 접두사가 없는 모든 요소는 이 특정 네임스페이스에 속하게 됩니다. 마지막 예에서는 다음을 사용했습니다.
<root xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.fish-shop.com/">
총이나 물고기를 사용할 필요가 없도록 표준 공간을 명시적으로 선언했습니다. 루트 요소는 낚시 상점이나 무기의 엔터티가 아니므로 두 공간을 사용하는 것은 논리적으로 올바르지 않습니다. 다음: xmlns:a 및 xmlns:b를 생성했지만 값이 동일한 경우 이는 동일한 공간이며 고유하지 않습니다. 그렇기 때문에 항상 고유한 값을 사용해야 합니다. 이 규칙을 위반하면 많은 오류가 발생할 수 있기 때문입니다. 예를 들어 다음과 같이 선언된 공백이 있다고 가정해 보겠습니다.
xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.gun-shop.com/"
그러면 우리 낚시 상점은 무기 상점이 될 것이고 접두사는 여전히 생선 상점이 될 것입니다. 이것이 모두 공간의 주요 포인트입니다. 나는 그것을 모두 수집하고 축소하고 명확하게 표현하는 데 많은 시간을 보냈습니다. 인터넷의 공간에 대한 정보는 매우 거대하고 종종 물일 뿐이므로 여기에있는 모든 것의 대부분은 시련을 통해 직접 배웠습니다. 그리고 오류. 여전히 궁금한 점이 있으면 기사 끝에 있는 링크를 사용하여 자료를 읽어보세요.

XML 스키마

주제가 매우 광범위하기 때문에 이 기사는 빙산의 일각에 불과할 것이라고 즉시 말하고 싶습니다. 구성표에 대해 더 자세히 알고 복잡한 구성표를 직접 작성하는 방법을 배우고 싶다면 기사 끝 부분에 다양한 유형, 제한 사항, 확장 등에 관한 모든 내용이 포함된 링크가 있습니다. 저는 이론부터 시작하고 싶습니다. 구성표는 .xsd(xml 구성표 정의) 형식을 가지며 DTD에 대한 보다 발전되고 널리 사용되는 대안입니다. 구성표는 요소를 생성하고 설명하는 등의 작업도 수행할 수 있습니다. 그러나 유형 검사, 네임스페이스 지원 및 더 넓은 기능 등 많은 보너스가 추가되었습니다. 우리가 DTD에 대해 이야기할 때 공백을 지원하지 않는다는 단점이 있었다는 것을 기억하시나요? 이제 이것을 연구했으므로 설명하겠습니다. 동일한 요소가 있는 DTD에서 두 개 이상의 스키마를 가져올 수 있다면 충돌(우연)이 발생하여 전혀 사용할 수 없게 됩니다. 어떤 요소가 필요한지 명확하지 않습니다. XSD는 스키마를 하나의 특정 공간으로 가져와 사용할 수 있기 때문에 이 문제를 해결합니다. 기본적으로 모든 XSD 스키마에는 대상 공간이 있습니다. 이는 스키마가 XML 파일에 작성되어야 하는 공간을 의미합니다. 따라서 XML 파일 자체에서 스키마에 미리 정의된 이러한 공간을 생성하고 여기에 접두사를 할당한 다음 필요한 스키마를 각 스키마에 연결하면 됩니다. 그런 다음 스키마의 요소를 안전하게 사용할 수 있습니다. 우리가 회로도를 가져온 공간입니다. 예를 들어 보겠습니다.
<?xml version="1.0" encoding="UTF-8"?>
<house>
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</house>
우리는 이를 스키마로 검증하고 싶습니다. 먼저 스키마가 필요합니다.
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.nedvigimost.com/">
    <element name="house">
        <complexType>
            <sequence>
                <element name="address" type="string" maxOccurs="unbounded" minOccurs="0" />
                <element name="owner" maxOccurs="unbounded" minOccurs="0" >
                    <complexType>
                        <sequence>
                            <element name="telephone" type="string" />
                        </sequence>
                        <attribute name="name" type="string" use="required"/>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
보시다시피 스키마도 XML 파일입니다. 필요한 내용을 XML로 직접 작성합니다. 이 스키마는 위의 예에서 XML 파일의 유효성을 검사할 수 있습니다. 예를 들어 소유자에게 이름이 없으면 회로는 이를 보게 됩니다. 또한 시퀀스 요소 덕분에 항상 주소가 먼저 오고 그 다음에는 집주인이 와야 합니다. 평범하면서도 복잡한 요소가 있습니다. 일반 요소는 특정 유형의 데이터만 저장하는 요소입니다. 예:
<element name="telephone" type="string" />
이것이 문자열을 저장하는 요소를 선언하는 방법입니다. 이 요소 안에는 다른 요소가 없어야 합니다. 복잡한 요소도 있습니다. 복합 요소는 그 자체 내에 다른 요소와 속성을 저장할 수 있습니다. 그런 다음 유형을 지정할 필요가 없고 요소 내부에 복잡한 유형을 작성하기 시작하면 됩니다.
<complexType>
    <sequence>
        <element name="address" type="string" maxOccurs="unbounded" minOccurs="0" />
        <element name="owner" maxOccurs="unbounded" minOccurs="0" >
            <complexType>
                <sequence>
                    <element name="telephone" type="string" />
                </sequence>
                <attribute name="name" type="string" use="required"/>
            </complexType>
        </element>
    </sequence>
</complexType>
다르게 수행하는 것도 가능했습니다. 복합 유형을 별도로 만든 다음 이를 유형으로 대체할 수 있었습니다. 이 예제를 작성하는 동안에만 어떤 이유로 표준 접두사를 사용하지 않고 일종의 접두사 아래에 공백을 선언해야 했습니다. 일반적으로 다음과 같이 나타났습니다.
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.nedvigimost.com/">
    <xs:element name="house" type="content" />

    <xs:complexType name="content">
        <xs:sequence>
            <xs:element name="address" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
            <xs:element name="owner" maxOccurs="unbounded" minOccurs="0" >
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="telephone" type="xs:string" />
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
이런 방식으로 우리는 우리만의 유형을 별도로 생성한 다음 이를 유형 속성의 어딘가에 대체할 수 있습니다. 한 가지 유형을 다른 장소에서 사용할 수 있으므로 매우 편리합니다. 회로 연결에 대해 좀 더 이야기하고 여기서 마치겠습니다. 회로를 연결하는 방법에는 두 가지가 있습니다. 특정 공간에 연결하는 것입니다.

회로를 연결하는 첫 번째 방법

첫 번째 방법은 회로에 특정 대상 공간이 있다고 가정합니다. 이는 계획 요소의 targetNamespace 속성을 사용하여 지정됩니다. 그런 다음 XML 파일에 이 동일한 공간을 만든 다음 거기에 스키마를 "로드"하는 것으로 충분합니다.
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="https://www.nedvigimost.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.nedvigimost.com/ example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</nedvig:house>
두 줄을 이해하는 것이 중요합니다.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemeLocation="https://www.nedvigimost.com/ example_schema1.xsd"
첫 번째 줄 - 기억하세요. 필요한 곳에 회로도를 로드하는 데 도움이 되는 개체로 생각하십시오. 두 번째 줄은 특정 다운로드입니다. SchemaLocation은 공백으로 구분된 "값 - 값" 형식의 값 목록을 허용합니다 . 첫 번째 인수는 스키마의 대상 네임스페이스(targetNamespace 값)와 일치해야 하는 네임스페이스입니다. 두 번째 인수는 스키마에 대한 상대 또는 절대 경로입니다. 그리고 이는 LIST 값이므로 예시에서는 스킴 뒤에 공백을 넣고, 다시 대상 공간, 다른 스킴 이름 등을 원하는 만큼 입력하면 됩니다. 중요한:나중에 스키마가 무언가를 검증하려면 이 공간을 선언하고 접두사와 함께 사용해야 합니다. 마지막 예를 주의 깊게 살펴보십시오.
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="https://www.nedvigimost.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.nedvigimost.com/ example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</nedvig:house>
우리는 nedvig 접두사에 이 대상 공간을 만든 다음 사용했습니다. 따라서 대상 스키마 공간이 참조되는 공간을 사용하기 시작하면서 요소의 유효성이 검사되기 시작했습니다.

회로를 연결하는 두 번째 방법

회로를 연결하는 두 번째 방법은 회로에 특정 대상 공간이 없음을 의미합니다. 그런 다음 이를 XML 파일에 연결하면 유효성이 검사됩니다. 이는 거의 동일한 방식으로 수행됩니다. 단, XML 파일에서 공백을 전혀 선언할 수 없으며 단순히 스키마를 연결하면 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<house xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</house>
보시다시피 이는 noNamespaceSchemaLocation을 사용하고 스키마 경로를 지정하여 수행됩니다. 스키마에 대상 공간이 없더라도 문서의 유효성이 검사됩니다. 마지막 터치: 다른 다이어그램을 다이어그램으로 가져온 다음 한 다이어그램의 요소를 다른 다이어그램에서 사용할 수 있습니다. 따라서 우리는 이미 다른 회로에 있는 일부 회로의 요소를 사용할 수 있습니다. 예:

소유자 유형이 선언된 스키마:

<?xml version="1.0" encoding="UTF-8" ?>
<schema targetNamespace="bonus" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
        <complexType name="owner">
            <all>
                <element name="telephone" type="string" />
            </all>
            <attribute name="name" type="string" />
        </complexType>
</schema>

첫 번째 스키마의 소유자 유형을 사용하는 두 번째 스키마:

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="main" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:bonus="bonus" elementFormDefault="qualified">
    <import namespace="bonus" schemaLocation="xsd2.xsd" />
    <element name="house">
        <complexType>
            <all>
              <element name="address" type="string" />
                <element name="owner" type="bonus:owner" />
            </all>
        </complexType>
    </element>
</schema>
두 번째 구성표는 다음 구성을 사용합니다.
<import namespace="bonus" schemaLocation="xsd2.xsd" />
이를 사용하여 한 스키마에서 다른 스키마로 유형과 요소를 보너스 공간으로 가져왔습니다. 따라서 우리는 Bonus:owner 유형에 접근할 수 있습니다. 그리고 다음 줄에서 우리는 그것을 사용했습니다:
<element name="owner" type="bonus:owner" />
또한 다음 줄에 약간의주의를 기울이십시오.
elementFormDefault="qualified"
이 속성은 스키마에서 선언되며 XML 파일에서 각 요소가 앞에 명시적인 접두사를 사용하여 선언되어야 함을 의미합니다. 없으면 접두사가 있는 외부 요소를 선언하고 내부의 모든 요소에 접두사를 설정하면 이 구성표의 요소를 정확하게 사용하고 있음을 명확하게 표시할 수 있습니다. 실제로 다음은 다른 스키마를 가져온 스키마에 의해 유효성이 검사된 XML 파일의 예입니다.
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="main" xmlns:bonus="bonus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="main xsd.xsd">
    <nedvig:address>ул. Есенина, дом №5</nedvig:address>
    <nedvig:owner name="Ivan">
        <bonus:telephone>+38-094-521-77-35</bonus:telephone>
    </nedvig:owner>
</nedvig:house>
줄에서 :
<bonus:telephone>+38-094-521-77-35</bonus:telephone>
elementFormDefault가 정규화(검사)되었기 때문에 첫 번째 스키마의 대상 공간을 가리키는 보너스 네임스페이스를 명시적으로 선언해야 하므로 모든 요소는 해당 공간을 명시적으로 나타내야 합니다.

기사 끝

다음 기사는 시리즈의 마지막 기사가 될 것이며 이미 Java를 사용하여 XML 파일을 처리하는 방법에 대해 다룰 것입니다. 우리는 다양한 방법 등으로 정보를 얻는 방법을 배웁니다. 이 기사가 유용했기를 바랍니다. 비록 여기에 오류가 있더라도 유용하고 새로운 것을 가르쳐 주거나 XML 파일을 더 잘 이해할 수 있는 기회를 제공할 수도 있습니다. 이에 대해 더 자세히 살펴보고 싶은 분들을 위해 다음과 같은 작은 링크 세트를 정리하기로 결정했습니다.
  • XSD Simple Elements - 이 기사부터 시작하여 읽기 시작하고 앞으로 나아가면 구성표에 대한 모든 정보가 거기에 수집되어 영어로만 다소 명확하게 설명됩니다. 번역기를 사용할 수 있습니다.

  • 네임스페이스에 대한 비디오에서는 첫 번째 관점이 명확하지 않은 경우 어떤 것에 대한 다른 관점을 듣는 것이 항상 유용합니다.

  • 네임스페이스 XML 은 네임스페이스 사용의 좋은 예이며 매우 포괄적입니다.

  • XML 기본 - 네임스페이스 - 네임스페이스에 대한 또 다른 짧은 기사입니다.

  • XML 스키마를 사용하여 요소를 정의하는 기본 사항 역시 스키마에 대한 매우 유용한 참고 자료이지만 내용을 자세히 살펴보면서 천천히 주의 깊게 읽어야 합니다.

그게 전부입니다. 이로부터 더 깊은 내용을 배우고 싶다면 링크가 도움이 되기를 바랍니다. 나는 이 모든 출처를 직접 살펴보고 모든 자료를 연구했으며 전반적으로 이것들은 내가 본 모든 출처 중에서 가장 유용했습니다. 왜냐하면 각각은 내가 이미 다른 곳에서 읽은 내용에 대한 이해를 향상시켰거나 새로운 것을 배우도록 할게요. 연습하는 동안에도 많은 일이 일어났어요. 따라서 이 모든 것을 정말 잘 이해하고 싶은 사람들을 위한 제 조언은 네임스페이스를 연구하고 스키마를 XML 파일에 쉽게 연결하는 방법과 스키마에 문서 구조를 작성하는 방법입니다. 그리고 가장 중요한 것은 연습입니다. 프로그래밍에 관심을 가져주시고 행운을 빌어주셔서 감사합니다 :) 이전 기사: [대회] Java 프로그래머를 위한 XML 기초 - 3부 중 1부 다음 기사: [대회] Java 프로그래머를 위한 XML 기초 - 3부 중 3.1 - SAX
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION