Files
meta-plugin/docs/hvps.101.001.01.xsd

218 lines
8.5 KiB
XML
Raw Normal View History

2026-04-15 16:04:29 +08:00
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="urn:cnaps:std:hvps:2010:tech:xsd:hvps.111.001.01"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:cnaps:std:hvps:2010:tech:xsd:hvps.111.001.01"
elementFormDefault="qualified">
<!-- 根节点 Document -->
<xs:element name="Document" type="Document"/>
<!-- 1. 文档结构 -->
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="FIToFICstmrCdtTrf" type="FIToFICstmrCdtTrf"/>
</xs:sequence>
</xs:complexType>
<!-- 2. 金融机构间客户汇兑主体 (大额汇兑) -->
<xs:complexType name="FIToFICstmrCdtTrf">
<xs:sequence>
<!-- 业务公共报头 -->
<xs:element name="GrpHdr" type="GroupHeader"/>
<!-- 资金交易明细 (大额报文通常只有一笔明细) -->
<xs:element name="CdtTrfTxInf" type="CreditTransferTransactionInformation" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- 3. 业务头 (Group Header) -->
<xs:complexType name="GroupHeader">
<xs:sequence>
<xs:element name="MsgId" type="Max35Text"/> <!-- 报文标识号 -->
<xs:element name="CreDtTm" type="ISODateTime"/> <!-- 报文创建时间 -->
<xs:element name="InstgPty" type="InstructingParty"/> <!-- 发起参与机构 -->
<xs:element name="InstdPty" type="InstructedParty"/> <!-- 接收参与机构 -->
<xs:element name="SysCd" type="SystemCode"/> <!-- 系统代码 (如 HVPS) -->
<xs:element name="Rmk" type="Max256Text" minOccurs="0"/> <!-- 备注 -->
</xs:sequence>
</xs:complexType>
<!-- 4. 汇兑交易信息 (Transaction Information) -->
<xs:complexType name="CreditTransferTransactionInformation">
<xs:sequence>
<xs:element name="PmtId" type="PaymentIdentification"/> <!-- 支付标识 -->
<xs:element name="PmtTpInf" type="PaymentTypeInformation" minOccurs="0"/> <!-- 支付类型信息 (业务种类) -->
<xs:element name="IntrBkSttlmAmt" type="ActiveCurrencyAndAmount"/> <!-- 银行间结算金额 -->
<xs:element name="Dbtr" type="PartyIdentification"/> <!-- 付款人 -->
<xs:element name="DbtrAcct" type="CashAccount" minOccurs="0"/> <!-- 付款人账户 -->
<xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification"/> <!-- 付款行 -->
<xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification"/> <!-- 收款行 -->
<xs:element name="Cdtr" type="PartyIdentification"/> <!-- 收款人 -->
<xs:element name="CdtrAcct" type="CashAccount"/> <!-- 收款人账户 -->
<xs:element name="Purp" type="Purpose" minOccurs="0"/> <!-- 用途/附言 -->
</xs:sequence>
</xs:complexType>
<!-- ==== 以下为子组件装配定义 ==== -->
<xs:complexType name="PaymentIdentification">
<xs:sequence>
<xs:element name="EndToEndId" type="Max35Text"/> <!-- 端到端标识号 -->
<xs:element name="TxId" type="Max35Text"/> <!-- 交易标识号 -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="InstructingParty">
<xs:sequence>
<xs:element name="InstgDrctPty" type="Max14Text"/> <!-- 发起直接参与机构 (14位行号) -->
<xs:element name="InstgPty" type="Max14Text" minOccurs="0"/> <!-- 发起间接参与机构 -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="InstructedParty">
<xs:sequence>
<xs:element name="InstdDrctPty" type="Max14Text"/> <!-- 接收直接参与机构 (14位行号) -->
<xs:element name="InstdPty" type="Max14Text" minOccurs="0"/> <!-- 接收间接参与机构 -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="PartyIdentification">
<xs:sequence>
<xs:element name="Nm" type="Max60Text"/> <!-- 户名 -->
<xs:element name="PstlAdr" type="PostalAddress" minOccurs="0"/> <!-- 地址 -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="CashAccount">
<xs:sequence>
<xs:element name="Id" type="AccountIdentification"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AccountIdentification">
<xs:sequence>
<xs:element name="Othr" type="GenericAccountIdentification"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GenericAccountIdentification">
<xs:sequence>
<xs:element name="Id" type="Max32Text"/> <!-- 账号 (一般最长32位) -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="BranchAndFinancialInstitutionIdentification">
<xs:sequence>
<xs:element name="FinInstnId" type="FinancialInstitutionIdentification"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FinancialInstitutionIdentification">
<xs:sequence>
<xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClearingSystemMemberIdentification">
<xs:sequence>
<xs:element name="MmbId" type="Max14Text"/> <!-- CNAPS 14位支付行号 -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="PaymentTypeInformation">
<xs:sequence>
<xs:element name="CtgyPurp" type="CategoryPurpose"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CategoryPurpose">
<xs:sequence>
<xs:element name="Prtry" type="Max5Text"/> <!-- 二代支付中业务种类为最多5位数字如大额A100 -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="Purpose">
<xs:sequence>
<xs:element name="Prtry" type="Max256Text"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PostalAddress">
<xs:sequence>
<xs:element name="AdrLine" type="Max256Text" minOccurs="0" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
<!-- ==== 以下为基本数据类型 (Simple Types) ==== -->
<xs:simpleType name="Max35Text">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="35"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Max32Text">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="32"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Max14Text">
<xs:restriction base="xs:string">
<xs:length value="14"/> <!-- 人行行号通常定长14位 -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Max5Text">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Max60Text">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Max256Text">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="256"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SystemCode">
<xs:restriction base="xs:string">
<xs:enumeration value="HVPS"/> <!-- 单笔大额 -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ISODateTime">
<xs:restriction base="xs:dateTime"/>
</xs:simpleType>
<!-- 人民币金额类型定义 -->
<xs:complexType name="ActiveCurrencyAndAmount">
<xs:simpleContent>
<xs:extension base="ActiveCurrencyAndAmount_SimpleType">
<xs:attribute name="Ccy" type="ActiveCurrencyCode" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="ActiveCurrencyAndAmount_SimpleType">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
<xs:totalDigits value="18"/>
<xs:minInclusive value="0.01"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ActiveCurrencyCode">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3,3}"/> <!-- 绝大多数情况为 CNY -->
</xs:restriction>
</xs:simpleType>
</xs:schema>