使用XSL删除XML的前三个和后四个字母

问题描述

| 如何使用XSL删除(或排除)“ admissionDescription” XML字符串的前三个字母和后四个字母? 这是我的页面,XML和代码
<xsl:if test=\"cost | admissionDescription\">
<dt>Admission:</dt>
<dd>
<xsl:if test=\"cost\"><xsl:value-of select=\"cost\"/><br/></xsl:if>
<xsl:if test=\"admissionDescription\"><xsl:value-of select=\"admissionDescription\" disable-output-escaping=\"yes\"/></xsl:if>
</dd>
</xsl:if>
    

解决方法

        您可以使用XPath函数
substring
string-length
。这是一个简单的参考http://www.w3schools.com/xpath/xpath_functions.asp#string 更新资料 您不需要
fn
前缀。这是一个例子
substring(admissionDescription,4,string-length(admissionDescription)-7)
给定这个测试输入
<xml>
  <cost>5</cost>
  <admissionDescription>123sometext4321</admissionDescription>
</xml>
应用您的XSL
<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" >
<xsl:template match=\"xml\">
  <xsl:copy>
    <xsl:if test=\"cost | admissionDescription\">
      <dt>Admission:</dt>
      <dd>
      <xsl:if test=\"cost\"><xsl:value-of select=\"cost\"/><br/></xsl:if>
      <xsl:if test=\"admissionDescription\"><xsl:value-of select=\"substring(admissionDescription,string-length(admissionDescription)-7)\" disable-output-escaping=\"yes\"/></xsl:if>
      </dd>
    </xsl:if>
  </xsl:copy>
</xsl:template>
</xsl:stylesheet>
您将获得所需的输出
<xml>
  <dt>Admission:</dt>
  <dd>5
  <br/>sometext</dd>
</xml>