-1

像这样的元素 < A313 >1 粗体需要删除,其中标签名称可能是 A313、A312、pa123 等。

输入是这样的

 <para>
text........
</para>
   <A1234>
 </A1234>
 <para-numbar>
  this contain some information
  </para-number>
  <A141>
  </A141>

输出是

<para>
      text........
 </para>

   <para-numbar>
   this contain some information
   </para-number>
4

2 回答 2

0

就这么简单

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="*[not(name() = translate(name(),'0123456789',''))]"/>
</xsl:stylesheet>

当将此转换应用于文档时,某些元素名称中包含数字,如下所示

<nums>
  <num>01</num>
  <num>02</num>
  <A314>xxx</A314>
  <b>
    <c221/>
  </b>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>

产生了想要的正确结果,在这种情况下是

<nums>
   <num>01</num>
   <num>02</num>
   <b/>
   <num>03</num>
   <num>04</num>
   <num>05</num>
   <num>06</num>
   <num>07</num>
   <num>08</num>
   <num>09</num>
   <num>10</num>
</nums>

说明

正确使用:

  1. 身份规则及其覆盖。

  2. 标准 XPathtranslate()函数。

于 2012-09-14T12:36:16.623 回答
0

此方法定义字符串是否包含数字:

public static class Extensions
{
    public static bool HasNumbers(this string s)
    {
        foreach (char c in s)
        {
            if (char.IsDigit(c))
            {
                return true;
            }
        }

        return false;
    }
}

并从列表中删除带有数字的元素:

List<string> list;
list.RemoveAll(str => str.HasNumbers());
于 2012-09-14T08:55:33.370 回答