跳转到内容

XRX/术语编辑器

来自维基教科书,开放的书籍,为开放的世界
< XRX

您想要一个工具来管理您组织特定的业务术语,包括定义、缩略语、同义词、更广泛/更狭隘的术语、参见术语、定义来源、审批历史记录、版本以及与 ISO/IEC 11179 数据元素的可追溯性和映射。

创建一个工具,使用类似于 W3C 简单知识组织 SKOS 草案标准的词汇表来管理单个业务术语。 在每个术语的 eXist 集合中使用一个 XML 文件,并在创建每个术语时让服务器分配一个 ID 号。 允许每个术语属于一个同义词集。 我们将每个术语与更广泛的术语相关联,并使用 XQuery 报告推断出更狭隘的术语。

设计步骤

[编辑 | 编辑源代码]

为了构建词汇表,我们可以为每个术语创建一个 XML 模式,并生成一个 XForms 应用程序来管理术语数据。 然后,我们可以手动编辑生成的表单以添加特定功能。

新实例文件

[编辑 | 编辑源代码]
<Term>
   <id/>
   <TermName/>
   <Acronym/>
   <SynonymID/>
   <Definition/>
   <SeeAlso/>
   <Broader/>
   <PrimarySourceCode/>
   <PrimarySourceOtherText/>
   <Approvals>
      <ApprovalStatusCode/>
      <AssignedToCode/>
      <ApprovedByCode/>
      <ApprovalDate/>
   </Approvals>
   <GroupStarredItemIndicator/>
   <ProjectCode/>
   <ClassifierCode/>
   <Tag/>
   <TermNoteText/>
   <DataElement>
      <DataElementIndicator/>
      <DataElementDerivedIndicator/>
      <DataElementDerivationRuleText/>
      <DataElementIdentifierIndicator/>
      <DataElementEnumerationsText/>
      <DataElementValidationRulesText/>
      <DataElementName/>
   </DataElement>
</Term>

术语 XML 模式文件

[编辑 | 编辑源代码]
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
   <xs:element name="Term">
      <xs:annotation>
         <xs:documentation>A single business term in organization specific business glossary. v0.06</xs:documentation>
      </xs:annotation>
      <xs:complexType>
         <xs:sequence>
            <xs:element name="id">
               <xs:annotation>
                  <xs:documentation>The term identifier. Usually a small integer assigned upon creation.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="TermName" type="xs:string">
               <xs:annotation>
                  <xs:documentation>The name of a term in the glossary.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="Acronym" minOccurs="0">
               <xs:annotation>
                  <xs:documentation>Optional acronym or abbreviation if used for the term.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="SynonymID" minOccurs="0">
               <xs:annotation>
                  <xs:documentation>A pointer to a synonym set.  Each synonym set contains a list of approximately equivalent terms and one of those terms is a preferred term.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="Definition">
               <xs:annotation>
                  <xs:documentation>A short, precise, non-circular (you cannot say a widget is a widget) definition for this term that clearly differentiates this term from other terms.</xs:documentation>
               </xs:annotation>
               <xs:simpleType>
                  <xs:restriction base="xs:string">
                     <xs:maxLength value="1000"/>
                     <xs:minLength value="5"/>
                  </xs:restriction>
               </xs:simpleType>
            </xs:element>
            <xs:element name="SeeAlso" type="xs:string" minOccurs="0" maxOccurs="unbounded">
               <xs:annotation>
                  <xs:documentation>Other terms related to this term other that synonyms.  May be hyperlinked.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="Broader" minOccurs="0">
               <xs:annotation>
                  <xs:documentation>A concept that is more general in meaning.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="PrimarySourceCode" type="PrimarySourceCodeType" minOccurs="0">
               <xs:annotation>
                  <xs:documentation>The primary source of the definition.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="PrimarySourceOtherText" minOccurs="0">
               <xs:annotation>
                  <xs:documentation>A text description of the primary source if it is not in one of the PrimarySourceCode.  You must have a other text if PrimarySourceCode is 'other'</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="Approvals" minOccurs="0">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="ApprovalStatusCode" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>An approval status such as draft, assigned to review team or approved.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                           <xs:restriction base="xs:string">
                              <xs:enumeration value="initial-draft"/>
                              <xs:enumeration value="assigned-to-review-team"/>
                              <xs:enumeration value="project-approved"/>
                              <xs:enumeration value="obsolete"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                     <xs:element name="AssignedToCode" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>The person (BA) that this term is assigned to faciliatate approval.  A code table is used to select the person's name.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                           <xs:restriction base="xs:string">
                              <xs:enumeration value="Alice"/>
                              <xs:enumeration value="Ann"/>
                              <xs:enumeration value="Bob"/>
                              <xs:enumeration value="John"/>
                              <xs:enumeration value="Fred"/>
                              <xs:enumeration value="Peg"/>
                              <xs:enumeration value="Sue"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                     <xs:element name="ApprovedByCode" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>Name of the person in the business unit that approved this data element.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                           <xs:restriction base="xs:string">
                              <xs:maxLength value="250"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                     <xs:element name="ApprovalDate" type="xs:date" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>The date the data element was approved.</xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="GroupStarredItemIndicator" minOccurs="0">
               <xs:annotation>
                  <xs:documentation>An indication that this item is of interest to a specific user.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="ProjectCode" minOccurs="0" maxOccurs="unbounded">
               <xs:annotation>
                  <xs:documentation>The projects that this term is associated with.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="ClassifierCode" minOccurs="0" maxOccurs="unbounded">
               <xs:annotation>
                  <xs:documentation>A code used to filter data elements.  The user interface is a selection list that reads an external code table of filters.</xs:documentation>
               </xs:annotation>
               <xs:simpleType>
                  <xs:restriction base="xs:string">
                     <xs:enumeration value="Adjust"/>
                     <xs:enumeration value="Entity"/>
                     <xs:enumeration value="IRS"/>
                     <xs:enumeration value="Legal"/>
                     <xs:enumeration value="MM"/>
                     <xs:enumeration value="Process"/>
                     <xs:enumeration value="Product"/>
                     <xs:enumeration value="Program-Project"/>
                     <xs:enumeration value="System"/>
                     <xs:enumeration value="Technical"/>
                  </xs:restriction>
               </xs:simpleType>
            </xs:element>
            <xs:element name="Tag" minOccurs="0" maxOccurs="unbounded">
               <xs:annotation>
                  <xs:documentation>A keyword associated with this term.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="TermNoteText" type="xs:string" minOccurs="0">
               <xs:annotation>
                  <xs:documentation>Any additional notes about this term.  Keep your definitions short by using this text area.</xs:documentation>
               </xs:annotation>
            </xs:element>
            <xs:element name="DataElement">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="DataElementIndicator">
                        <xs:annotation>
                           <xs:documentation>Set to true if this is a formal data elment that should be registered by the metadata registry.</xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="DataElementDerivedIndicator" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>An indication that the element is derived from other data elements.</xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="DataElementDerivationRuleText" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>A textual description of the rule to derive this data element.  Use names of other data elements if possible.  This field is required if the DataElementDerivedIndicator is true.</xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="DataElementIdentifierIndicator" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>An indication that this data element identifies an instance within an indetification scheme.</xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="DataElementEnumerationsText" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>A textual description of all the data element enumerations including codes, ranges and definitions with distinction definitions for each code and range of codes.</xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="DataElementValidationRulesText" minOccurs="0">
                        <xs:annotation>
                           <xs:documentation>A textual description of any validation rules used to check this data element.</xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="DataElementName" minOccurs="0" maxOccurs="unbounded">
                        <xs:annotation>
                           <xs:documentation>The ISO name (namespace prefix, ObjectPropertyTerm) of a data element in a metadata registry.</xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:complexType name="DataElementType">
      <xs:sequence/>
   </xs:complexType>
   <xs:simpleType name="PrimarySourceCodeType">
      <xs:restriction base="xs:string">
         <xs:enumeration value="enterprise-glossary"/>
         <xs:enumeration value="sales-glossary"/>
         <xs:enumeration value="hr-glossary"/>
         <xs:enumeration value="other"/>
      </xs:restriction>
   </xs:simpleType>
</xs:schema>

XForms 应用程序

[编辑 | 编辑源代码]

这是一个 XQuery,当它使用 new=true 或 id=123 的参数运行时,会生成一个 XForms 应用程序。 它需要与 new-instance.xml 位于同一个文件夹中,并且需要一个 save.xq 和一个 update.xq 来分别完成保存新实例(分配 ID)和更新现有实例的工作。 update.xq 将负责版本控制和存档旧值。 更新脚本还可以负责创建谁在何时更改了哪些文件的日志文件。

注意:我还没有修复它以使用批准和数据元素容器的新的路径名。

xquery version "1.0";
declare namespace exist = "http://exist.sourceforge.net/NS/exist"; 
declare namespace system="http://exist-db.org/xquery/system";
declare namespace request="http://exist-db.org/xquery/request";
import module namespace cms = "http://cms.metadata.dmccreary.com" at "/db/mdr/cms/cms-module.xq";
declare option exist:serialize "method=xhtml media-type=text/xml indent=yes";

let $new := request:get-parameter('new', '')
let $id := request:get-parameter('id', '')
let $form := 'Glossary Editor'
let $form-version := '0.08'

return

(: check for required parameters :)
if (not($new or $id))
    then (
    <error>
        <message>Parameter "new" and "id" are both missing.  One of these two arguments is required for this web service.</message>
    </error>)
    else (
        let $server-port := substring-before(request:get-url(), '/exist/rest/db/') 
        let $collection := '/db/mdr/glossaries/data/pace/'
(: put in the appropriate file name :)
let $file := if ($new)
   then ('new-instance.xml')
   else ( concat( $server-port, '/exist/rest/', $collection, $id, '.xml'))
return
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:xf="http://www.w3.org/2002/xforms" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:ev="http://www.w3.org/2001/xml-events" >
    <head>
        <title>{$form}</title>
        {cms:import-css()}
        <link rel="stylesheet" type="text/css" href="../../resources/css/xforms-global.css"/>
        <link rel="stylesheet" type="text/css" href="../../resources/css/xrx-xforms.css"/>
        <link rel="stylesheet" type="text/css" href="local-xform.css"/>
        <xf:model>
            <xf:instance xmlns="" id="my-term" src="{$file}"/>
            <xf:bind nodeset="instance('my-term')/TermName" required="true()"/>
            <xf:bind nodeset="instance('my-term')/Definition" required="true()"/>
            <xf:bind nodeset="instance('my-term')/ApprovalDate" type="xs:date"/>
            <!-- these do not work since the form will not submit with a null date -->
            <xf:bind nodeset="instance('my-term')/ApprovalDate" required="false()" nillable="true()"/>
            <xf:bind nodeset="instance('my-term')/GroupStarredItemIndicator" type="xs:boolean"/>
            <xf:bind nodeset="instance('my-term')/DataElement/DataElementIndicator" type="xs:boolean"/>
            <xf:bind nodeset="instance('my-term')/DataElement/DataElementIdentifierIndicator" type="xs:boolean"/>
            <xf:bind nodeset="instance('my-term')/DataElement/DataElementDerivedIndicator" type="xs:boolean"/>
            <xf:bind nodeset="instance('my-term')/GroupStarredItemIndicator" required="false()"/>
            <!-- these are used to bind to conditional views or triggers-->
            <xf:instance xmlns="" id="views">
                <data>
                    <approved/>
                    <synonym-delete-trigger/>                    
                    <see-also-delete-trigger/>
                    <broader-delete-trigger/>
                    <narrower-delete-trigger/>
                    <tag-delete-trigger/>
                    <other-source/>
                    <data-element/>
                    <data-element-derived/>
                </data>
            </xf:instance>
            <!-- only display the delete triggers if there is more than one item on the list -->

            <xf:bind nodeset="instance('my-term')/PreferredTermIndicator" type="xs:boolean"/>
            <xf:bind id="approved" nodeset="instance('views')/approved" relevant="instance('my-term')/ApprovalStatusCode='program-approved'"/>
            <xf:bind id="synonym-delete-trigger" nodeset="instance('views')/synonym-delete-trigger" relevant="count(instance('my-term')/Synonym) &gt; 1"/>            
            <xf:bind id="see-also-delete-trigger" nodeset="instance('views')/see-also-delete-trigger" relevant="count(instance('my-term')/SeeAlso) &gt; 1"/>

            <xf:bind id="broader-delete-trigger" nodeset="instance('views')/broader-delete-trigger" relevant="count(instance('my-term')/Broader) &gt; 1"/>
            <xf:bind id="narrower-delete-trigger" nodeset="instance('views')/narrower-delete-trigger" relevant="count(instance('my-term')/Narrower) &gt; 1"/> 
            <xf:bind id="tag-delete-trigger" nodeset="instance('views')/tag-delete-trigger" relevant="count(instance('my-term')/tag) &gt; 1"/>
            <xf:bind id="other-source" nodeset="instance('views')/other-source" relevant="instance('my-term')/PrimarySourceCode='other' "/>
            <xf:bind id="data-element" nodeset="instance('views')/data-element" relevant="instance('my-term')/DataElementIndicator='true' "/>
            <xf:bind id="data-element-derived" nodeset="instance('views')/data-element-derived" relevant="instance('my-term')/DataElementDerivedIndicator='true' "/>
 
             {if ($new='true')
             then 
                 <xf:bind nodeset="instance('my-term')/ApprovalDate" calculate="substring(now(), 1, 10)"/>
                 else ()}
             
            <!-- code tables -->
            <xf:instance xmlns="" id="code-tables" src="code-tables.xq"/>
           
            <xf:submission id="save" method="post" action="{if ($new='true') then ('save-new.xq') else ('update.xq')}" instance="my-term" replace="all"/>
            <xf:submission id="echo-test" method="post" action="{$server-port}/exist/rest/db/mdr/xqueries/echo-test.xq" instance="my-term" replace="all"/>
        </xf:model>
    </head>
    <body>     
        {cms:header()}
        <a class="breadcrumb" href="../../index.xhtml">Metadata Registry</a> &gt;
        <a class="breadcrumb" href="../index.xhtml">Glossary Manager</a>
        <h1>{if ($new='true') then ('Create New') else ('Update')} Project Glossary Term</h1>
        <p>{$form} - {$form-version} - File: {$file}</p>
        <xf:group ref="instance('my-term')">
            <xf:label class="group-label">Glossary Term</xf:label>
            <xf:input ref="TermName" class="TermName">
                <xf:label>Term Name:</xf:label>
                <xf:hint>The name of a term in the glossary.</xf:hint>
            </xf:input>
            <xf:input ref="Acronym">
                <xf:label>Acronym:</xf:label>
                <xf:hint>The acronym or abbreviation for this term.</xf:hint>
            </xf:input>
            
             <xf:input ref="SynonymID">
                <xf:label>Synonym Set ID:</xf:label>
                <xf:hint>A link to the Synonym Set Editor.</xf:hint>
            </xf:input>
            
            <xf:textarea class="Definition" ref="Definition">
                <xf:label>Definition:</xf:label>
                <xf:hint>A short, precise, non-circular definition for this term that clearly differentiates this term
                    from other terms.</xf:hint>
            </xf:textarea>

            <xf:group>
                 <xf:label class="group-label">See Also</xf:label>
                 <xf:repeat id="see-also-repeat" nodeset="instance('my-term')/SeeAlso">
                     <xf:input ref="." class="SeeAlso inline-delete" id="see-also-input">
                         <xf:label>See Also (non-synonym):</xf:label>
                         <xf:hint>A related term in the glossary that is not a synonym.</xf:hint>
                     </xf:input>
                     <xf:trigger bind="see-also-delete-trigger" class="inline-delete">
                         <xf:label>Delete See Also</xf:label>
                         <xf:delete nodeset="instance('my-term')/SeeAlso[index('see-also-repeat')]" ev:event="DOMActivate"/>
                     </xf:trigger>
                 </xf:repeat>
                 <xf:trigger>
                     <xf:label>Insert New "See Also" Term</xf:label>
                     <xf:action ev:event="DOMActivate">
                         <xf:insert nodeset="instance('my-term')/SeeAlso" at="last()" position="after"/>
                         <xf:setvalue ref="instance('my-term')/SeeAlso[index('see-also-repeat')]" value=""/>
                         <xf:setfocus control="see-also-input"/>
                     </xf:action>
                 </xf:trigger>
            </xf:group>

             <xf:input ref="instance('my-term')/Broader">
                <xf:label>Broader Term:</xf:label>
                <xf:hint>A term that is more general in meaning.</xf:hint>
            </xf:input>     
            
            <xf:group>
                  <xf:label class="group-label">Definition Sources</xf:label>
                 <xf:repeat id="source-repeat" nodeset="instance('my-term')/PrimarySourceCode">
                     <xf:select1 ref="." class="inline-delete" id="source-select">
                         <xf:label>Definition Source:</xf:label>
                         <xf:hint>The source of information about the term and its defintion.</xf:hint>
                         <xf:itemset nodeset="instance('code-tables')/CodeTable[CodeTableName='SourceCode']/item">
                             <xf:label ref="label"/>
                             <xf:value ref="value"/>
                         </xf:itemset>
                     </xf:select1>
                     <xf:trigger bind="tag-delete-trigger" class="inline-delete">
                         <xf:label>Delete Source</xf:label>
                         <xf:delete nodeset="instance('my-term')/PrimarySourceCode[index('source-repeat')]" ev:event="DOMActivate"/>
                     </xf:trigger>
                 </xf:repeat>
                     <xf:trigger>
                         <xf:label>Add New Source</xf:label>
                         <xf:action ev:event="DOMActivate">
                             <xf:insert nodeset="instance('my-term')/PrimarySourceCode" at="last()" position="after"/>
                             <xf:setvalue ref="instance('my-term')/PrimarySourceCode[index('source-repeat')]" value=""/>
                             <xf:setfocus control="source-select"/>
                         </xf:action>
                     </xf:trigger>
             </xf:group>
             
            <!-- bind="other-source" -->
            <xf:group ref="instance('views')/other-source">
               <xf:input ref="instance('my-term')/PrimarySourceOtherText">
                  <xf:label>Other Source: </xf:label>
               </xf:input>
            </xf:group>

            <xf:group>
                  <xf:label class="group-label">Projects</xf:label>
            <xf:repeat id="project-repeat" nodeset="instance('my-term')/ProjectCode">
                <xf:select1 ref="." class="inline-delete" id="project-select">
                    <xf:label>Project:</xf:label>
                    <xf:hint>A code for classifying all the data elements.</xf:hint>
                    <xf:itemset nodeset="instance('code-tables')/CodeTable[CodeTableName='ProjectCode']/item">
                        <xf:label ref="label"/>
                        <xf:value ref="value"/>
                    </xf:itemset>
                </xf:select1>
                <xf:trigger bind="tag-delete-trigger" class="inline-delete">
                    <xf:label>Delete Project</xf:label>
                    <xf:delete nodeset="instance('my-term')/ProjectCode[index('project-repeat')]" ev:event="DOMActivate"/>
                </xf:trigger>
            </xf:repeat>
                <xf:trigger>
                    <xf:label>Add New Project</xf:label>
                    <xf:action ev:event="DOMActivate">
                        <xf:insert nodeset="instance('my-term')/ProjectCode" at="last()" position="after"/>
                        <xf:setvalue ref="instance('my-term')/ProjectCode[index('project-repeat')]" value=""/>
                        <xf:setfocus control="project-select"/>
                    </xf:action>
                </xf:trigger>
            </xf:group>
            
            <xf:select1 ref="instance('my-term')/AssignedToCode">
                <xf:label>Assigned to Facilitate Approval:</xf:label>
                <xf:itemset nodeset="instance('code-tables')/CodeTable[CodeTableName='AssignedToCode']/item">
                        <xf:label ref="label"/>
                        <xf:value ref="value"/>
                    </xf:itemset>
            </xf:select1>
            
            <xf:select1 ref="instance('my-term')/ApprovalStatusCode">
                <xf:label>Approval Status:</xf:label>
                <xf:item>
                    <xf:label>Initial Draft</xf:label>
                    <xf:value>initial-draft</xf:value>
                </xf:item>
                <xf:item>
                    <xf:label>Assigned for Review</xf:label>
                    <xf:value>assigned-to-review-team</xf:value>
                </xf:item>
                <xf:item>
                    <xf:label>Program Approved</xf:label>
                    <xf:value>program-approved</xf:value>
                </xf:item>
            </xf:select1>
            
            <xf:group ref="instance('views')/approved">
                <xf:select1 ref="instance('my-term')/ApprovedByCode">
                    <xf:label>Approved By:</xf:label>
                    <xf:hint>The person or organization that approved this term.</xf:hint>
                     <xf:itemset nodeset="instance('code-tables')/CodeTable[CodeTableName='ApprovedByCode']/item">
                            <xf:label ref="label"/>
                            <xf:value ref="value"/>
                        </xf:itemset>
                </xf:select1>
                
                <xf:input ref="instance('my-term')/ApprovalDate">
                    <xf:label>Approval Date:</xf:label>
                    <xf:hint>The date that this term was approved.</xf:hint>
                </xf:input>
            </xf:group>
            
            <xf:input ref="instance('my-term')/GroupStarredItemIndicator">
                <xf:label>Starred Item:</xf:label>
                <xf:hint>An indication by the group that this item needs attention.</xf:hint>
            </xf:input>
            
            <xf:group>
                  <xf:label class="group-label">Classifiers</xf:label>
                  <xf:repeat id="classifier-repeat" nodeset="instance('my-term')/ClassifierCode">
                     <xf:select1 ref="." class="inline-delete" id="classifier-select">
                         <xf:label>Classifier (Filter) Code:</xf:label>
                         <xf:hint>A code for classifying all the data elements.</xf:hint>
                         <xf:itemset nodeset="instance('code-tables')/CodeTable[CodeTableName='ClassifierCode']/item">
                             <xf:label ref="label"/>
                             <xf:value ref="value"/>
                         </xf:itemset>
                     </xf:select1>
                     <xf:trigger bind="tag-delete-trigger" class="inline-delete">
                         <xf:label>Delete Classifier (Filter)</xf:label>
                         <xf:delete nodeset="instance('my-term')/ClassifierCode[index('classifier-repeat')]" ev:event="DOMActivate"/>
                     </xf:trigger>
                 </xf:repeat>
                     <xf:trigger>
                         <xf:label>Add New Classifier (Filter)</xf:label>
                         <xf:action ev:event="DOMActivate">
                             <xf:insert nodeset="instance('my-term')/ClassifierCode" at="last()" position="after"/>
                             <xf:setvalue ref="instance('my-term')/ClassifierCode[index('classifier-repeat')]" value=""/>
                             <xf:setfocus control="classifier-select"/>
                         </xf:action>
                     </xf:trigger>
            </xf:group>
            
           <xf:group>
                  <xf:label class="group-label">Tags</xf:label>
                 <xf:repeat id="tag-repeat" nodeset="instance('my-term')/Tag">
                     <xf:input ref="." class="Tag inline-delete" id="tag-input">
                         <xf:label>Tag (Keyword):</xf:label>
                     </xf:input>
                     <xf:trigger bind="tag-delete-trigger" class="inline-delete">
                         <xf:label>Delete Tag (Keyword)</xf:label>
                         <xf:delete nodeset="instance('my-term')/Tag[index('tag-repeat')]" ev:event="DOMActivate"/>
                     </xf:trigger>
                 </xf:repeat>
                 <xf:trigger>
                     <xf:label>Append New Tag (Keyword)</xf:label>
                     <xf:action ev:event="DOMActivate">
                         <xf:insert nodeset="instance('my-term')/Tag" at="last()" position="after"/>
                         <xf:setvalue ref="instance('my-term')/Tag[index('tag-repeat')]" value=""/>
                         <xf:setfocus control="tag-input"/>
                     </xf:action>
                 </xf:trigger>
            </xf:group>
            
            <xf:textarea class="Notes" ref="instance('my-term')/TermNoteText">
                <xf:label>General notes:</xf:label>
                <xf:hint>Any related notes about this term.</xf:hint>
            </xf:textarea>
            
             <xf:input ref="instance('my-term')/DataElement/DataElementIndicator">
                <xf:label>Candidate Data Term:</xf:label>
                <xf:hint>This  term has a mapping to a registered data element.</xf:hint>
            </xf:input>
            
            <xf:group ref="instance('views')/data-element">
            
                <xf:input ref="instance('my-term')/DataElement/DataElementDerivedIndicator">
                   <xf:label>Data Element Derived:</xf:label>
                   <xf:hint>This data element is derived from other data elements.</xf:hint>
               </xf:input>

                <xf:group ref="instance('views')/data-element-derived">
                    <xf:textarea class="large-textarea" ref="instance('my-term')/DataElement/DataElementDerivationRuleText">
                        <xf:label>Derivation Rules:</xf:label>
                        <xf:hint>Any rules used to derive this data element from other data elements.</xf:hint>
                    </xf:textarea>
                 </xf:group>
                
                 <xf:input ref="instance('my-term')/DataElement/DataElementIdentifierIndicator">
                   <xf:label>Data Element Identifier:</xf:label>
                   <xf:hint>This data element is use to identify data sets.</xf:hint>
               </xf:input>
               
                <xf:textarea class="large-textarea" ref="instance('my-term')/DataElementEnumerationsText">
                    <xf:label>Enumerations (Valid Codes):</xf:label>
                    <xf:hint>A listing of all valid values and definitions for the possible values of this data element.</xf:hint>
                </xf:textarea>

                <xf:textarea class="large-textarea" ref="instance('my-term')/DataElement/DataElementValidationRulesText">
                    <xf:label>Validation Rules:</xf:label>
                    <xf:hint>Any rules used to validate this data element.</xf:hint>
                </xf:textarea>

                <xf:input ref="instance('my-term')/DataElement/DataElementName" class="DataElementName">
                   <xf:label>Data Element Name:</xf:label>
                   <xf:hint>ISO name for this data element including the ObjectClass, Property and Representation Term using an UpperCamelCase notation.</xf:hint>
               </xf:input>

            </xf:group>
            
            <xf:submit submission="save">
                <xf:label>Save</xf:label>
            </xf:submit>
        </xf:group>
        <a href="{cms:feedback-url()}">Feedback</a>
    </body>
</html>
)

搜索应用程序

[编辑 | 编辑源代码]

返回:选择列表生成器 下一个:常见问题解答管理器

华夏公益教科书