定义新的标签类型,应该使用自定义roleType,还是自定义arcroleType?

 

技术的使用,有时候如同堆积木,就看你怎么堆,大家怎么堆。当生成一个大家都要使用的东西时,应该力求一致的方式处理,是有必要的!
现在需要自定义一种编码标签,里面放置元素的编码。一种做法:

模式文件:

    <xsd:appinfo>

      <link:arcroleType arcroleURI=http://my-xbrl.com/core/arcrole/codeLabel cyclesAllowed="any" id="codeLabel“>

        <link:definition>元素编码标签</link:definition>

        <link:usedOn>link:labelArc</link:usedOn>

      </link:arcroleType>

    </xsd:appinfo>

标签链接库:

 <link:labelArc xlink:type="arc" xlink:arcrole="http://my-xbrl.com/core/arcrole/codeLabel" xlink:from="label_XXXX" xlink:to="label_XXXX" xlink:title="label:XXXXX"/>  


我认为不合适,基本分析:

(1) 概念和标签的关系是绝对不允许直接循环的。所以:cyclesAllowed="any" 错误;
(2)一般的arcroleURI,应该说明arc两头的对象类型,例如:
http://www.xbrl.org/2003/arcrole/concept-label,所以codeLabel表达的信息不完整。

   

进一步看这个问题: 
  (1)编码标签,是标签的类型,说明当前标签是元素编码,不是其他类型,和标准的起始标签、合计标签、简洁标签等,以及LRR扩展的反向标签negatedLable、净值标签netLabel,属于同一范畴。基于同样的原因定义编码标签,为什么不是自定义roleType,而要去自定义arcroleType呢?

(2)我们认为当需要定义元素(concept、elelemnt)和资源(resource)之间的新的关系类型时,才有必要定义新的arcroleType。通过分析IFRS、以及US的分类标准我们都会发现他们没有定义新的关系类型,尽可能使用LRR、DTR里面的角色类型(roleType)、数据类型,这是各套分类标准,力求兼容的做法。

 

如果使用自定义arcroleType的方式定义编码标签,请问编码对应的<link:label>使用什么@xlink:role值,里面放一个合计标签,还能清晰说明它是编码标签?这里的arc关系,就是概念-标签的关系,就是“http://www.xbrl.org/2003/arcrole/concept-label ”。

如果非要定义新的arcroleType,arcroleURI的定义方法,也应该才采用一致的方式,说明arc的起点和终点的类型。例如上面的arcroleURI很清楚说明,起点是concept,终点是label。那么arcroleURI应该为:http://my-xbrl.com/core/arcrole/concept-code, 另外在定义一种新的资源类型(code),这个资源保存的就是元素编码。

 

到目前为止,我们只在formula中使用过自定义arcroleType,和自定义resourceType。那就是断言选项:有些业务规则必须通过、有些业务规则如果失败可以放行。如果必须验证通过的规则失败,公司必须重新提交材料。下面是我们的定义的arcroleType、和resource

 

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
  为满足formula验证可以按照不同等级处理,为断言设置验证等级,通过generic:arc设置  
-->
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:vo="http://xbrl-cn.org/2009/validate-option" xmlns:variable="http://xbrl.org/2008/variable" xmlns:gen="http://xbrl.org/2008/generic" xmlns:link="http://www.xbrl.org/2003/linkbase" targetNamespace="http://xbrl-cn.org/2009/validate-option" elementFormDefault="qualified" attributeFormDefault="qualified">
<import namespace="http://www.xbrl.org/2003/XLink" schemaLocation="http://www.xbrl.org/2003/xl-2003-12-31.xsd"/>
<import namespace="http://xbrl.org/2008/variable" schemaLocation="http://www.xbrl.org/2008/variable.xsd"/>
<annotation>
<appinfo>
<!-- arcrole from an assertion resource to an assertionOption resource -->
<link:arcroleType id="assertion-option" cyclesAllowed="undirected" arcroleURI="http://xbrl-cn.org/arcrole/2009/assertion-option">
<link:definition>assertion validation option</link:definition>
<link:usedOn>gen:arc</link:usedOn>
</link:arcroleType>
</appinfo>
</annotation>
<!-- validate option elements definition -->
<simpleType name="levelType">
<annotation>
<documentation>validation level for assertion or other kind of validation      </documentation>
</annotation>
<restriction base="string">
<enumeration value="must"/>
<enumeration value="should"/>
<enumeration value="may"/>
</restriction>
</simpleType>
<simpleType name="variablesType">
<annotation>
<documentation>validation level for assertion or other kind of validation      </documentation>
</annotation>
<list itemType="variable:QName"/>
</simpleType>
<attribute name="level" type="vo:levelType" /> 
<attribute name="messageVariables" type="vo:variablesType" /> 
<element name="assertionOption" substitutionGroup="variable:resource" id="xml-assertion-option">
<complexType mixed="true">
<complexContent mixed="true">
<extension base="variable:resource.type">
<attribute name="level" use="optional"/>
<attribute name="messageVariables" use="optional"/>
<anyAttribute namespace="##other" processContents="lax"/>
</extension>
</complexContent>
</complexType>
</element>
</schema>
 
 
 
 
  


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值