2012-02-23 3 views
4

우리는 webservice 응답을 구현하여 xsd : decimal fraction digits이 패턴이 나타낼 때 충분히 길지 않을 때 0으로 채워지도록 요청했습니다. 나는 이것이 합리적인 요청인지, xsd : decimal이 이와 같은 패턴과 함께 사용되어야한다고 생각하는지 궁금하다. 정밀도가 2 자리까지 가능 수단 그래서 fractionDigits 2로 설정된다십진수로 사용할 수있는 xsd 패턴?

<xsd:simpleType> 
    <xsd:restriction base="xsd:decimal"> 
     <xsd:totalDigits value="14"/> 
     <xsd:fractionDigits value="2"/> 
     <xsd:pattern value="[\-+]?[0-9]{1,12}[.][0-9]{2}"/> 
    </xsd:restriction> 
</xsd:simpleType> 

: 여기 그들의 사양에 따라 XSD의 중요한 부분이다. http://zvon.org/xxl/XMLSchemaTutorial/Output/ser_types_st2.html에 따르면 소수 자릿수가 적은 경우 (예 : 5.1과 같은 숫자의 경우)도 적합합니다.

그러나 패턴 {2}에 따라 항상 2 자릿수가 있어야합니다.

우리는 일반적인 응용 프로그램 개발 플랫폼을 개발 중이며 사전에 소수점 표시 (통화, pH 값, 거리 등)에 대해 알려주지 않습니다. 이 사례는 플랫폼이 사용되는 특정 프로젝트에서 발생하지만 일반적으로 어떤 종류의 데이터가 전송되는지는 알 수 없습니다. WSDL을 따르기로 결정할 수 있습니다.이 상태에서는 2 분수 자리가 있어야합니다. 그러나 우리의 구현은 매우 일반적인 것이어야합니다.

이 소수점 자리를 정확히 덧붙여서는 안되며, 심지어는이 소수점을 그냥 두지 말고 패드해야한다고 말하는 것도 없습니다. 이론적으로 우리는 그것이 패턴과 일치 할 때까지 5로 채우기로 결정할 수 있습니다. 내가 아는 한 패턴은 거의 사용되지 않으며 암호는 암호와 같은 것으로 사용됩니다. XSD 사양은 모호하지만 XSD의 올바른 사용 여부와 0으로 채우기를 결정하는 것이 합리적인지 여부를 누군가가 밝힐 수 있다면 높이 평가할 수 있습니다. 실제로 특정 소수점 값의 파라미터에 의존

+0

+1 좋은 질문 –

답변

2

는 실용적를 강제로 공정되지 않을 것 그것 정말 필요한 경우를 제외하고 우리가 .. 언급하는 개체에 따라, 내 리트머스 테스트가 될 것이다 직접적으로 관련된 기술 스택의 관점에서 이것을 보거나 더 나은 것은 주류입니다.

자바에서는 JAXB, xsd/svcutil/etc는 .NET에서 생각할 수 있습니다. 값 1을 사용하여이 스키마 조각에 대해 매우 일반적인 도구를 빠르게 테스트하면 유효한 XML을 생성하지 못합니다. 이렇게하면 개발자가 모든 종류의 사용자 지정 내용을 스크램블하여 XSD 패턴대로 작동하게 할 수 있습니다. Painfull, 높은 개발 및 유지 보수 비용 ...

동일한 내용이 XSLT에 적용됩니다. 출력을 수동으로 포맷 할 필요가있을 것입니다 ... 결론, XSD 패턴은 "자동"포맷팅에 사용할 수있는 머신이 아닙니다 ... 아직 그런 것을 보지 못했습니다 ...

나는 이와 같은 요구 사항이 부당하다고 생각하며 개인적으로 교환되는 데이터를 설명 할 때 반 패턴으로 간주되어야한다고 생각합니다. 절대적인 것이 없기 때문에 예외가 있어야한다고 생각할 수 있습니다. 나는 아무 것도 생각할 수 없지만, 당신이 그러한 요구 조건을 제시 한 이유를 찾아야합니다. 그런 다음이 패턴을 포함하지 않는 솔루션을 찾으려고합니다.

+0

다른 기술 스택과 비교하는 것이 좋은 방법입니다. 제안 방법에 대해 살펴 보겠습니다. 제안 해 주셔서 감사합니다. –

1

..

XML은 다양한 데이터를 가질 수있는 가장 바람직한 수송하는 것 및 스토어 데이터 중 하나이다. 여기 두 가지 예를 선택

  1. 데이터는 여기에 내 조언이 우리의 클라이언트 데이터 복구 소프트웨어에 원조 .. [0-9]*[.][0-9]{2}을 강제로 패드를 0으로 이러한 방법을 설계하고, 통화입니다.

  2. 데이터는 화학 물질의 pH는 물론 です. 여기에 소수점 한 자리는 필수 항목입니다.

[0-1][0-9][.][0-9]는 그래서 모두가 패턴 :

+0

답장을 보내 주셔서 감사합니다. 중요한 것은 일반적인 애플리케이션 개발 플랫폼을 개발 중이며 사전에 소수점을 사용할 지에 대해 알려주지 않는다는 것입니다. 이 사례는 플랫폼이 사용되는 특정 프로젝트에서 발생하지만 일반적으로 어떤 종류의 데이터가 전송되는지는 알 수 없습니다. WSDL을 따르기로 결정할 수 있습니다.이 상태에서는 2 분수 자리가 있어야합니다. 그러나 우리의 구현은 매우 일반적인 것이어야합니다. 제로 패딩은 합리적인 것 같지만 여전히 임의적입니다. –

+0

나는이 문제를 더 분명하게하기 위해이 부분을 지금 내 질문에 넣었다. 어쨌든, +1 대답하지만 몇 가지 의견을 기다릴께 :) –

+0

@BasvandenBroek, 그 경우에는 내 의견은 패딩을 강제로하지 않습니다 .. 당신은 데이터가 길이가 1mtr 수 있다면 참조하십시오 1.2 mtrs 또는 1.25 mtrs 수 있습니다. 우리가 패딩을 누른 다음 1이 1.00로 예상되면 .. 이상하게 들립니다 .. XSD ** REJECTS ** bad patterns :) –

관련 문제