ソース スキーマで定義されているすべての Float および Double データ型を 10 進数データ型に変換する必要があります。
サード パーティから XML ドキュメントを取得し、それを XML 構造に変換する既存の XSLT があり、それを 4GL DB アプリケーションに渡すことができます。ネイティブ 4GL インターフェイスの優れた点は、受信 XML をネイティブ データセット構造に変換できることです。短い欠点は、Float および Double データ型を文字データ型にマップすることです。
XSLT 内で Float/Double データ型の要素を識別し、10 進数に変換する方法はありますか。これはメインの XSLT の前のステップであり、出力をメインの XSLT に渡すことができると考えていました。
サンプル スキーマ:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ttPTManifest">
<xs:complexType>
<xs:sequence>
<xs:element ref="JobCode"/>
<xs:element ref="EstimateHours"/>
<xs:element ref="ActualHours"/>
<xs:element ref="Density"/>
<xs:element ref="NettLitres"/>
<xs:element ref="QuitOutLitres"/>
<xs:element ref="QuitInLitres"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="QuitOutLitres" type="xs:double"/>
<xs:element name="QuitInLitres" type="xs:float"/>
<xs:element name="PTManifestSonicIn">
<xs:complexType>
<xs:sequence>
<xs:element ref="ttPTManifest"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="JobCode" type="xs:string"/>
<xs:element name="NettLitres" type="xs:double"/>
<xs:element name="EstimateHours" type="xs:float"/>
<xs:element name="Density" type="xs:decimal"/>
<xs:element name="ActualHours" type="xs:float"/>
</xs:schema>
XML データのサンプル:
<?xml version="1.0"?>
<PTManifestSonicIn xsi:noNamespaceSchemaLocation="SampleIn.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ttPTManifest>
<JobCode>000123</JobCode>
<EstimateHours>3.14159E3</EstimateHours>
<ActualHours>3.14159E3</ActualHours>
<Density>123.456</Density>
<NettLitres>3.14159265358979E3</NettLitres>
<QuitOutLitres>3.14159265358979E3</QuitOutLitres>
<QuitInLitres>3.14159E3</QuitInLitres>
</ttPTManifest>
</PTManifestSonicIn>
必要なスキーマアウト:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ttPTManifest">
<xs:complexType>
<xs:sequence>
<xs:element ref="JobCode"/>
<xs:element ref="EstimateHours"/>
<xs:element ref="ActualHours"/>
<xs:element ref="Density"/>
<xs:element ref="NettLitres"/>
<xs:element ref="QuitOutLitres"/>
<xs:element ref="QuitInLitres"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="QuitOutLitres" type="xs:decimal"/>
<xs:element name="QuitInLitres" type="xs:decimal"/>
<xs:element name="PTManifestSonicIn">
<xs:complexType>
<xs:sequence>
<xs:element ref="ttPTManifest"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="JobCode" type="xs:string"/>
<xs:element name="NettLitres" type="xs:decimal"/>
<xs:element name="EstimateHours" type="xs:decimal"/>
<xs:element name="Density" type="xs:decimal"/>
<xs:element name="ActualHours" type="xs:decimal"/>
</xs:schema>
必要な XML データ出力:
<?xml version="1.0"?>
<PTManifestSonicIn xsi:noNamespaceSchemaLocation="SampleOut.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ttPTManifest>
<JobCode>000123</JobCode>
<EstimateHours>3141.59</EstimateHours>
<ActualHours>3141.59</ActualHours>
<Density>123.456</Density>
<NettLitres>3141.59265358979</NettLitres>
<QuitOutLitres>3141.59265358979</QuitOutLitres>
<QuitInLitres>3141.59</QuitInLitres>
</ttPTManifest>
</PTManifestSonicIn>