와 XML 파일에서 xsd.exe 도구가있는 XSD 파일 생성 : 나는 기존의 XML 파일에 대한 XSD 파일을 생성하는 것을 시도하고있다내가 원하는 무엇 여러 네임 스페이스
합니다.
저는 Visual Studio와 함께 제공되는 xsd.exe
도구를 사용하고 있습니다.
XML 파일의 일부 요소는 네임 스페이스 한정입니다. 어떤 경우에는 지역 이름은 아래와 같이 동일합니다
<images>
<icons>
<icon url="http://www.icons.com/logo.png"/>
</icons>
<foo:icons>
<foo:foo_icon url="http://www.foo.org/pic.ico"/>
</foo:icons>
</images>
내가 점점 오전 :
이 xsd.exe myfile.xml
를 호출하면 나에게 오류를 제공합니다 Cannot add a column named 'icons': a nested table with the same name already belongs to this DataTable.
OK하지만 네임 스페이스가 무엇 그게 아니야? 그런 모호한 문제 해결. 네임 스페이스가 없다면 접두어를 사용하는 대신 foo_icons
요소를 호출하면됩니다.
내가 뭘하려 : 나는 그것을 고려 네임 스페이스를 취 너무 xsd.exe
을 구성하는 방법을 찾고 시도하지만, 어느 xsd /?
도 내 구글 쿼리가 어떤 답을 밝혀
. /n[amespace]:
매개 변수는 여러 네임 스페이스를 지정할 수 없습니다.
나는 Working with Namespaces in XML Schema을 읽었지만 훨씬 더 현명하지는 않습니다.
별도의 XSD 파일을 만들어 서로에 포함시켜야합니까? 이 목적을 위해 xsd.exe
을 사용하는 것은 다루지 않습니다.
저는 XSD에 익숙하지 않기 때문에 전체 프로세스에 대한 몇 가지 필수 개념을 오해하고 있습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 고맙겠습니다.
편집 1 - 마크 Gravell의 제안 다음은 :
나는 것을 시도했다, 그러나 나는 또한 xsd
로 (다른 부모 노드 아래) XML의 다른 섹션에 나타난 (접두사) 요소의 이름을 변경 한 것 그것을 허용하지 마십시오. 나는 elementOne
, elementTwo
등으로 이름을 바꿔야했습니다. 수동으로 다시 이름을 바꿀 예정이었습니다. 하지만 내가 가지고있는 XSD는 어쨌든 작동하지 않습니다.
<xs:schema id="NewDataSet" targetNamespace="http://www.foo.com/bar" xmlns:mstns="http://www.foo.com/bar" xmlns="http://www.foo.com/bar" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"
xmlns:app1="http://www.foo.com/bar/extensions"
xmlns:app2="http://www.w3.org/XML/1998/namespace">
그리고 내가 가진 파일의 유효성을 검사하기 위해 노력하고있어 때, 나는 오류를 받고 있어요 :
헤더는 목적이 무엇인지와,
Prefix 'app2' cannot be mapped to namespace name reserved for "xml" or "xmlns".
그래서 xsd.exe
이렇게 만들었습니까? 어떻게 수정해야합니까?
xsd의 제한 사항처럼 보입니다. 얼마나 큰 XML입니까? 즉 손으로 현실적인 옵션을 사용하고 있습니까? 어쩌면 모호한 비트를 잘라내어 나중에 수동으로 추가 할 수 있습니다. 그리고 xsd.exe에서 대부분을 처리 할 수 있는지 확인하십시오. (다음 마지막 몇 비트를 다시 추가 출력을 편집) –