更新代码:
<?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>
变量&#39; PatName&#39;可能会出现“DOE JOHN&#39;我需要把它转变为“DOE ^ JOHN&#39;名称中也可能有多个空格,所以我希望所有的空格都可以。改为插入符号并保留其当前位置。
我需要使用名称中的逗号。
目前输出就像它进入时一样,所以我的测试不能正常工作。
谢谢你的期待!
编辑#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输入中,&#39;患者姓名&#39;有'SMPTE模式&#39;我期待&#39; SMPTE ^ PATTERN&#39;。
我希望这有一些帮助,我希望我的身份变换器是正确的。
感谢每个人的时间
答案 0 :(得分:3)
您可以使用翻译功能。
<xsl:value-of select="translate($PatName, ' ','^')"/>
如果要用插入符替换逗号和空格,请使用:
<xsl:value-of select="translate($PatName, ' ,','^^')"/>
答案 1 :(得分:0)
这不是答案,但我需要发布一些代码。
请将以下样式表应用于您的(原始)输入并报告结果:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:variable name="patName" select="/dataset/attr[@tag='00100010']" />
<xsl:template match="/">
<tests>
<value><xsl:value-of select="$patName" /></value>
<contains><xsl:value-of select="contains($patName, ' ')" /></contains>
<trans><xsl:value-of select="translate($patName, ' ' , '^')" /></trans>
</tests>
</xsl:template>
</xsl:stylesheet>
答案 2 :(得分:0)
变化
<xsl:param name="PatName" select="attr[@tag='00100010']"/>
到
<xsl:param name="PatName" select="dataset/attr[@tag='00100010']"/>
并更改
<xsl:value-of select="translate($PatName, ' ','^')"/>
到
<xsl:value-of select="translate($PatName, ' ,','^^')"/>