XSD : xs : integer와 xs : int의 차이점은 무엇입니까?


111

나는 XSD를 만들기 위해 시작에 대한 예를 몇에서 발견 xs:integer하고 xs:int.

xs:integer과 의 차이점은 무엇입니까 xs:int? 언제 사용해야 xs:integer합니까? 언제 사용해야 xs:int합니까?

답변:


110

차이점은 다음과 같습니다. xs:int부호있는 32 비트 정수입니다. xs:integer제한되지 않은 정수 값입니다. 자세한 내용은 참조하십시오 https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp 예를 들어, XJC (자바) 생성 Integer을 위해 xs:intBigInteger위해 xs:integer.

결론 : xs:int크로스 플랫폼에서 작업하고 숫자가 문제없이 통과되는지 확인 하려면 사용 하십시오. 더 큰 숫자를 원하면 xs:long대신 사용하십시오 xs:integer(으로 생성됨 Long).


2
Saxon 9 HE (Home Edition)는 'xs : integer , but not xs : int` 또는 xs:long.
Nishi

13
w3cshools는 권한이 없습니다. 적절한 정의를 참조하지 않는 이유는 무엇입니까? w3.org/2001/XMLSchema.xsd는 정수 예를 들어, +/- 9223372036854775808에 결합되는 것을 말한다. 또한 크로스 플랫폼은 (준수) xml과 관련이 없습니다.
Paul Hargreaves

@Nishi, Saxon 9 HE가 준수하지 않는 것처럼 들립니다. saxon.sourceforge.net 페이지를 읽으면 EE 버전 만 준수하는 것 같습니다.
Paul Hargreaves

2
@PaulHargreaves, Saxon 9 HE는 (내가 아는 한) 완전히 준수하는 XSLT 프로세서입니다 .xs : int는 기본 XSLT 프로세서가 지원하는 데 필요한 유형 집합에 없습니다 . 준수하는 XSD 프로세서가 아니라는 말은 사실이지만 오해의 소지가 있습니다. 이것은 XSD 프로세서가 아닙니다.
CM Sperberg-McQueen

8
@PaulHargreaves, "xs : integer"의 최대 값이 +/- 9223372036854775808에 대한 귀하의 의견은 잘못되었습니다. XMLSchema.xsd는 "xs : long"이 "xs : integer"를 +/- 9223372036854775808로 제한한다고 정의합니다.
metatechbe

30

XS : 정수 fractionDigits 제로로하고, 그렇지 않으면 법적 될 소수점 및 트레일 링 제로를 금지 어휘 공간 설정면과, 진수 : 유형 XS의 제한 사항입니다. 유한 한 크기의 머신에서 실행되는 구현은 임의로 크거나 작은 값을 허용 할 필요가 없지만 최소값 또는 최대 값은 없습니다. (10 진수 16 자리 값을 지원하는 데 필요합니다.)

XS : INT의 유형 XS의 제한이다 긴 2147483647에 maxInclusive 패싯 세트 -2147483648에 minInclusive 패싯과. (보시다시피, 2 개의 보완 32 비트 부호있는 정수 필드에 편리하게 맞습니다. xs : long은 64 비트 부호있는 정수 필드에 적합합니다.)

일반적인 규칙은 당신이 말하고 싶은 것과 일치하는 것을 사용하는 것입니다. 요소 나 속성에 대한 제약이 그 값이 정수 여야한다는 것이라면 xs : integer는이를 간결하게 말합니다. 값이 2- 보완 표현에서 최대 32 비트로 표현 될 수있는 정수 여야한다는 제약 조건 인 경우 xs : int를 사용합니다. (두 번째이지만 때로는 중요한 문제는 도구 체인이 다른 도구보다 더 잘 작동하는지 여부입니다. 도구 체인보다 오래 지속되는 데이터의 경우 먼저 데이터를 듣는 것이 좋습니다. 도구를 공급하기 위해서만 존재하는 데이터의 경우 도구 체인을 변경하면 관심이 없을 것입니다. 도구 체인을 듣지 않을 이유가 없습니다.)


당신 : 유한 한 크기의 기계에서 실행되는 구현은 [...]에 필요하지 않습니다. 표준은 무한 기계에서 실행되는 구현 (튜링 기계와 같은 것)이 전체 범위를 수용하고 적절하게 표현해야한다는 요구 사항을 가지고 있습니까? :-) 현재 알려진 물리학 법칙을 가진 우주는 그러한 기계를 인정하지 않기 때문에 멋질 것입니다.
Jeppe Stig Nielsen

아니요, 사양 에는 무한 머신에서 실행되는 구현에 대한 특별한 규칙이 없습니다. 모든 구현은 무한 데이터 유형의 부분 구현을 관리하는 규칙의 이점을 누릴 수 있습니다.
CM Sperberg-McQueen

6

일부 사람들에게 중요 할 수있는 pedantry에 대한 메모를 추가 할 것입니다. xs : int가 부호있는 32 비트 정수라고 말하는 것은 올바르지 않습니다. 이러한 형태의 단어는 이진 디지털 컴퓨터 내의 메모리 (또는 레지스터 등)에서의 구현을 의미합니다. XML은 문자 기반이며 최대 32 비트 부호있는 값을 "2147483647"(물론 내 따옴표)로 구현합니다. 이는 32 비트 이상입니다! 사실 인 것은 xs : int가 (간접적으로) xs : integer의 제한으로, 최대 및 최소 허용 값이 부호 비트가있는 32 비트 정수의 해당 구현에 부과 된 제한과 동일하게 설정된다는 것입니다.


XSD로 검증 된 소스 정보 세트가 일련의 문자 형식으로 제공된다는 보장은 없습니다. 스키마가 XSLT 또는 XQuery를 통해 구성된 문서 인스턴스의 유효성을 검사하는 데 사용되는 경우 xs : int 값이 32 비트 정수에 대한 일반적인 표현을 사용하여 메모리에 표현 될 수있는 모든 가능성이 있습니다.
CM Sperberg-McQueen 2014

@ CMSperberg-McQueen, 나는 당신의 요점을 이해하지 못합니다. xs : int는 범위가있는 유형입니다. 저장 방법은 XSD와 무관하며 메모리에서 32 비트 부호있는 정수로 "int"를 하드 코딩하는 것은 예를 들어 다음과 같은 다른 XSD가 선택되면 문제를 요구합니다. int는 w3c XSD에 정의 된 범위와 다른 범위를 갖습니다.
Paul Hargreaves

1
@PaulHargreaves는 약간 현명한 점입니다 (답변의 정신에서). xs : int 부호있는 32 비트 2- 보완 정수 라고 단호하게 말하는 것은 옳지 않습니다 . 그러나 대답은 또한 XML이 문자 기반이므로 xs : int의 최대 값은 문자열 "2147483647"입니다. 마지막 부분이 반드시 그런 것은 아닙니다. XSD 유형은 많은 시스템 (예 : XQuery 데이터베이스)에서 사용됩니다. 여기서 xs : int 값은 유니 코드 문자열보다 32 비트 2- 보완 필드에 표시 될 가능성이 더 높습니다.
CM Sperberg-McQueen

사용하는 대신에 "입니다" "대표"
크리스 월시에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.