我正在尝试编写一个脚本来为我的Unicode库构建一些表,我需要构建的表之一是Unicode标准中所有数字代码点的列表及其值。
为此,我在shell脚本中使用ucd/repertoire/char/@nv[.!='NaN']
,因为我的xpath查询不起作用,所以我不得不建立代码点列表及其值。
我已尝试自定义一堆xpath查询字符串,我在stackoverflow上看到过其他一些问题。
这是我尝试使用的当前查询字符串:xmllint --xpath /*[local-name()='ucd']/*[local-name()='repertoire']/*[local-name()='char']/@nv
和<ucd xmlns="http://www.unicode.org/ns/2003/ucd/1.0">
<description>Unicode 10.0.0</description>
<repertoire>
<char cp="0000" age="1.1" na="" JSN="" gc="Cc" ccc="0" dt="none" dm="#" nt="None" nv="NaN" bc="BN" bpt="n" bpb="#" Bidi_M="N" bmg="" suc="#" slc="#" stc="#" uc="#" lc="#" tc="#" scf="#" cf="#" jt="U" jg="No_Joining_Group" ea="N" lb="CM" sc="Zyyy" scx="Zyyy" Dash="N" WSpace="N" Hyphen="N" QMark="N" Radical="N" Ideo="N" UIdeo="N" IDSB="N" IDST="N" hst="NA" DI="N" ODI="N" Alpha="N" OAlpha="N" Upper="N" OUpper="N" Lower="N" OLower="N" Math="N" OMath="N" Hex="N" AHex="N" NChar="N" VS="N" Bidi_C="N" Join_C="N" Gr_Base="N" Gr_Ext="N" OGr_Ext="N" Gr_Link="N" STerm="N" Ext="N" Term="N" Dia="N" Dep="N" IDS="N" OIDS="N" XIDS="N" IDC="N" OIDC="N" XIDC="N" SD="N" LOE="N" Pat_WS="N" Pat_Syn="N" GCB="CN" WB="XX" SB="XX" CE="N" Comp_Ex="N" NFC_QC="Y" NFD_QC="Y" NFKC_QC="Y" NFKD_QC="Y" XO_NFC="N" XO_NFD="N" XO_NFKC="N" XO_NFKD="N" FC_NFKC="#" CI="N" Cased="N" CWCF="N" CWCM="N" CWKCF="N" CWL="N" CWT="N" CWU="N" NFKC_CF="#" InSC="Other" InPC="NA" PCM="N" vo="R" RI="N" blk="ASCII" isc="" na1="NULL">
<name-alias alias="NUL" type="abbreviation"/>
<name-alias alias="NULL" type="control"/>
</char>
</repertoire>
</ucd>
这是一个示例代码点,因此您可以看到它的布局。
char
我尝试检查每个nv
,看看它的cp
属性是否等于有效数字,告诉它忽略&#34; NaN&#34;,如果它的属性不是NaN,我认为它有效,抓取nv
值及其//ucd/repertoire/char
值并将它们放入C表中,但是我还没有真正掌握更高级别的脚本部分,我已经卡在了xpath部分。
那么,我哪里错了?我尝试过搜索结构化版本的各种不同版本(我的意思是ucd/repertoire/char
,//char@nv
,只有document
,以及其他一些我不喜欢的版本#39;甚至还记得。)