更新的代码:
<?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输入 链接
XSL输出如下:
<?xml version="1.0" encoding="UTF-8"?>
<dataset/>
在XSL输入中,'Patient Name'中有'SMPTE PATTERN',我期望的是'SMPTE^PATTERN'。
希望这对你有所帮助,同时我希望我的身份转换器是正确的。
感谢大家的时间。
<xsl:template ...>
的开始标签也加进去。 - deanosaur