xslt - XSL 用插入符替换空格

标签 xslt replace spaces

更新代码:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" indent="no"/>
  <!-- overwritten by application with actual values -->
  <xsl:param name="calling" select="'SAMPLE_MOD'"/>
  <xsl:param name="called" select="'SERVER1'"/>
  <xsl:param name="date" select="'20051206'"/>
  <xsl:param name="time" select="'115600.000'"/>
  <xsl:param name="PatName" select="attr[@tag='00100010']"/>
  <xsl:template match="/dataset">
     <dataset>
     <xsl:variable name="PerfProcStepDesc" select="attr[@tag='00400254']"/>
     <xsl:variable name="StudyDesc" select="attr[@tag='00081030']"/>
       <xsl:if test="string-length($StudyDesc)=0">
         <xsl:if test="$PerfProcStepDesc">
            <!-- (0008,1030) Study Description -->
           <attr tag="00081030" vr="LO">
             <xsl:value-of select="$PerfProcStepDesc"/>
           </attr>
         </xsl:if>
       </xsl:if>
     </dataset>
     <dataset>
        <xsl:variable name="caret" select="'^'"/>
        <xsl:if test="contains($PatName, ' ')">
            <xsl:value-of select="translate($PatName, ' ','^')"/>
        </xsl:if>   
     </dataset>
  </xsl:template>
</xsl:stylesheet>

变量“PatName”可能会显示为“DOE JOHN”,我需要将其转换为“DOE^JOHN” 名称中也可能有多个空格,所以我希望所有“空格”都更改为脱字符和以保留其当前在名称中的位置。

我需要对名称中的逗号执行相同的操作。

目前输出和输入一样,所以我的测试没有正常工作。

感谢观看!

编辑#2:

我已经更改了我的代码以应用身份转换(希望我做对了!)此外,我还拥有处理我的 XSL 样式表时的 XSL 输入和 XSL 输出。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" indent="no"/>
  <!-- overwritten by application with actual values -->
  <xsl:param name="calling" select="'SAMPLE_MOD'"/>
  <xsl:param name="called" select="'SERVER1'"/>
  <xsl:param name="date" select="'20051206'"/>
  <xsl:param name="time" select="'115600.000'"/>
  <xsl:param name="PatName" select="attr[@tag='00100010']"/>
<!-- IdentityTransform -->
<xsl:template match="/ | @* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
</xsl:template>
  <xsl:template match="/dataset">
     <dataset>
     <xsl:variable name="PerfProcStepDesc" select="attr[@tag='00400254']"/>
     <xsl:variable name="StudyDesc" select="attr[@tag='00081030']"/>
       <xsl:if test="string-length($StudyDesc)=0">
         <xsl:if test="$PerfProcStepDesc">
            <!-- (0008,1030) Study Description -->
           <attr tag="00081030" vr="LO">
             <xsl:value-of select="$PerfProcStepDesc"/>
           </attr>
         </xsl:if>
       </xsl:if>
     </dataset>
     <dataset>
        <xsl:variable name="caret" select="'^'"/>
        <xsl:if test="contains($PatName, ' ')">
            <xsl:value-of select="translate($PatName, ' ','^')"/>
        </xsl:if>   
     </dataset>
  </xsl:template>
</xsl:stylesheet>

XSL 输入 here

XSL 输出如下:

<?xml version="1.0" encoding="UTF-8"?>
<dataset/>

在 XSL 输入中,“Patient Name”有“SMPTE PATTERN”,我期待“SMPTE^PATTERN”。

我希望这能有所帮助,我希望我的身份转换器是正确的。

谢谢大家抽空

最佳答案

您可以使用翻译功能。

<xsl:value-of select="translate($PatName, ' ', '^')"/>

如果您想用插入符号替换逗号和空格,请使用:

<xsl:value-of select="translate($PatName, ' ,', '^^')"/>

关于xslt - XSL 用插入符替换空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361114/

相关文章:

xml - 在xslt中合并两个字符串

xslt 跳过已经 "visited"节点

C 分配字符串时无法包含格式说明符

python - 打印列表时保持Python在换行后不留空格

clipboard - 删除剪贴板中文本字符串中的空格

Xslt 生成一些带有 CDATA 的 <name> 标记和一些不带 CDATA 的 <name> 标记?

java - 如何为 XSLT 支持格式不正确的 XHTML

javascript - 根据字典替换字符串中的短语

vim - 如何替换光标下的单个单词?

file - 编辑平面文件以在每行上包含特定数量的字符?