2014-03-12 84 views
1

更新的代碼: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']"/> 
    <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」可能遇到的「能源部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輸入

, '患者姓名' 有 'SMPTE模式',我希望 'SMPTE ^模式' 。

我希望這有些幫助,我希望我有身份轉換正確。

感謝每一個時間

+0

你可能想要把開'的'標籤在那裏,以及 – deanosaur

+0

對不起,我忘了張貼,它是在我的樣式表 - 感謝! – Docjay

+0

請在您的原始輸入中嘗試下面我回答中發佈的樣式表。 –

回答

2

您可以使用翻譯功能。

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

如果要替換逗號和空間插入符,使用此:

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

我試過你的第一個例子,輸出沒有改變,所以我猜測'空間'沒有被測試抓住? – Docjay

+0

你不需要的xsl:選擇,這裏所有..使用: \t的

+0

也如@deanosaur所建議的那樣,請更正XSLT ..它的格式不正確。 –

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, '&#32;')" /></contains> 
     <trans><xsl:value-of select="translate($patName, '&#32;' , '^')" /></trans> 
    </tests> 
</xsl:template> 

</xsl:stylesheet> 
+0

我使用了上面的樣式表並將其應用於我的原始輸入。這裏是輸入[鏈接](http://www.pastebin.ca/2658482)&這是輸出:<?xml version =「1.0」encoding =「UTF-8」?> -rery for the格式。 – Docjay

+0

@Docjay這是不可能的。在任何輸入中,您都無法使用我的樣式表得到這個結果。 –

+0

我很抱歉 - 這隻能是輸出強制(這是什麼)。我試圖弄清楚如何查看JBOSS 4.2.3中確切的輸出來自變壓器。非常感謝您的耐心和幫助,請不要給我太多眼光!大聲笑 – Docjay

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, ' ,','^^')"/>