0

まず、私はプログラマーではありません。

このように説明された用語を含む巨大な XML ファイルがあります。

<term>
<termId>MANUAL000399</termId>
<termUpdate>Add</termUpdate>
<termName>care</termName>
<termType>Pt</termType>
<termStatus>Active</termStatus>
<termApproval>Approved</termApproval>
<termCreatedDate>20120618T14:38:20</termCreatedDate>
<termCreatedBy>admin</termCreatedBy>
<termModifiedDate>20120618T14:40:41</termModifiedDate>
<termModifiedBy>admin</termModifiedBy>
</term>

このファイルでは、term に次のいずれかが含まれています。

<termType>

PtまたはND

解決策を両方に適用したいと思います。私がやりたいことは、termName の単語の長さを見て、そこに 5 文字未満の場合は、別のプロパティを追加することです。

<termNote> 

の後に

<termModifiedBy> 

財産:

<term>
<termId>MANUAL000399</termId>
<termUpdate>Add</termUpdate>
<termName>care</termName>
<termType>Pt</termType>
<termStatus>Active</termStatus>
<termApproval>Approved</termApproval>
<termCreatedDate>20120618T14:38:20</termCreatedDate>
<termCreatedBy>admin</termCreatedBy>
<termModifiedDate>20120618T14:40:41</termModifiedDate>
<termModifiedBy>admin</termModifiedBy>
<termNote label="Short">Short</termNote>
</term>

誰でもこれに最適なアプローチをアドバイスできますか? ここで正規表現を見つけましたが、問題はそれらの適用です。誰かが /\b[a-zA-Z]{5,}\b/ を提案しているのを見つけましたが、これと一致する場合は termNote を挿入します。

4

1 に答える 1

0

この変換は、単純な XSLT スタイルシートで行うことができます。(XSLT は、非プログラマーがプログラマーよりも熱心に使用することが多い言語です。スタイルシートは、基本的に一連の変換ルールです。X に一致するものを見つけたら、それを Y に置き換えます。もちろん、XSLT を習得したら、自分自身をプログラマーと呼ぶことができます)。

最初のボイラープレート:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/> <!-- removes whitespace from the input -->
<xsl:output indent="yes"/>      <!-- adds whitespace to the output -->

次に、これ以上特定のルールがない場合に、何も変更せずにコピーするデフォルトのテンプレート ルール:

<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

次に、短い用語に一致するテンプレート ルール:

<xsl:template match="term[string-length(termName) &lt; 5]">
  <term>
    <xsl:copy-of select="*"/>
    <termNote label="Short">Short</termNote>
  </term>
</xsl:template>

そして、次で終了します。

</xsl:stylesheet>

これは、任意の XSLT プロセッサで実行できるはずです。たくさんあります。他に何も思い浮かばない場合は、KernowForSaxon (SourceForge から) をダウンロードしてください。これは、私の Saxon プロセッサに関する非常に単純な GUI インターフェイスです。

于 2012-09-11T11:30:19.433 に答える