[英]How do I use the "replace" function in XSLT 1.0 to remove special characters from my XML to get the correct JSON output?
我得到的 XML
<root>
<page>0</page>
<totalRecords>74</totalRecords>
<totalPages>1</totalPages>
<offset>0</offset>
<status>success</status>
<entityList>
<ENAME>
<ADAMS>
</ENAME>
<DNAME>&RESEARCH</DNAME>
<JOB>CLERK</JOB>
<EMPNO>7876</EMPNO>
<HIREDATE>1987-05-23 "00: 00 ":00.0</HIREDATE>
<LOC>DALLAS</LOC>
</entityList>
<entityList>
<ENAME>>ALLEN</ENAME>
<DNAME>&SALES</DNAME>
<JOB>SALESMAN</JOB>
<EMPNO>7499</EMPNO>
<HIREDATE>1981-02-20 00:00:00.0</HIREDATE>
<LOC>CHICAGO</LOC>
</entityList>
<entityList>
<ENAME>Abhi></ENAME>
<DNAME>&SALES</DNAME>
<JOB>PRU</JOB>
<EMPNO>7956</EMPNO>
<HIREDATE></HIREDATE>
<LOC>CHIC"AGO "</LOC>
</entityList>
</root>
到目前為止我的 XSLT 塊
<?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" omit-xml-declaration="yes" />
<xsl:template match="root">
{
"page":<xsl:value-of select="//page"/>,
"totalRecords":<xsl:value-of select="//totalRecords"/>,
"totalPages":<xsl:value-of select="//totalPages"/>,
"offset":<xsl:value-of select="//offset"/>,
"status":"<xsl:value-of select="//status"/>",
"entityList":[<xsl:for-each select="entityList">
{
"ENAME":"<xsl:value-of select="translate(ENAME,'<,>','')"/>",
"DNAME":"<xsl:value-of select="replace(DNAME,'&','')"/>",
"JOB":"<xsl:value-of select="JOB"/>",
"EMPNO":"<xsl:value-of select="EMPNO"/>",
"HIREDATE":"<xsl:value-of select="replace(HIREDATE,'"','')"/>",
"LOC":"<xsl:value-of select="replace(LOC,'"','')"/>"
}
<xsl:if test="position()!=last()">,</xsl:if>
</xsl:for-each>
]
}
</xsl:template>
</xsl:stylesheet>
我是使用替換功能還是使用翻譯? 在這里,我看到人們使用變量,但我是 XSLT 的新手,我只是在學習一切。
我需要刪除“&”、“<>”和雇用日期中的引號以及 XML 中的所有其他特殊字符
請盡可能提供指示和提示。 謝謝你。
XSLT 1.0 中沒有replace()
函數; 它是在 2.0 中引入的。
您可以使用translate()
刪除特殊字符,例如translate(., '&', '')
。
但你真的想做什么? 為什么要刪除這些字符? 看起來好像您正在嘗試輸出 JSON,在這種情況下,正確處理這些字符的方法只是使用<xsl:output method="text"/>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.