我正在尝试为公司中的所有应用程序生成一个通用的支持/帮助页面。要求如下:
Links.xml如下:
<Links>
<link>
<url>Application 1</url>
<FilePath>/Files/App1.xml</FilePath>
</ link >
<link>
<url>Application 2</url>
<FilePath>/Files/App2.xml</FilePath>
</link >
<link>
<url>Application 3</url>
<FilePath>/Files/App3.xml</FilePath>
</link >
</Links>
然后是Application XML文件,如下所示:App.xml
<Contents>
<Header> Help Path for Application 1</Header>
<Summary> This application is used to raise new requests to create User ID’s. It has workflow attached to it which can be used ?????.
</Summary>
<Support>
<Email>abc@gmail.com </Email>
<Phone> +1 82828 29282 2727 </Phone>
<Text> Please contact ??? in department </Text>
</Support>
<FAQS>
<FAQ>
<QUESTION> For installation what I should Do</ QUESTION >
<ANSWER> Click on this link. And download the installer. Please note that you need Admin rights for it. /ANSWER>
<ANSWER> If you are on company network then it can be installed through My Portal </ANSWER>
</FAQ>
<FAQ>
<QUESTION> Question 2</ QUESTION >
<ANSWER> Answer 1 /ANSWER>
<ANSWER> Answer 2 </ANSWER>
<ANSWER> Answer 3 </ANSWER
</FAQ>
</FAQS>
</Contents>
最后我们需要HTML中的输出(仅限示例)
想法是保持灵活性,因此只要新应用程序需要添加它,就可以通过输入Links.xml并创建相应的XML文件来添加。
知道我应该如何追求这个吗?关于这一点的一些例子将是可观的。
干杯。
答案 0 :(得分:0)
是的,我有一个解决方案,它叫做ProjFlx,在GitHub上托管的开源项目:https://github.com/Xportability/ProjFlx
ProjFlx的使用几乎符合您对T的要求,但您的结构除外,尽管此Web框架非常灵活,您可以轻松地将其合并到您的框架中。否则,整个应用程序导航是从公共目录结构和每个文件夹中找到的常见Xml文档驱动的。此Xml中的内容将写入页面。在此页面Xml中,您将找到..结构中的子页面部分。
ProjFlx正在多个网站上使用,包括:meetscoresonline.com,riocrest.com,xportability.com,cloudformatter.com等。
一个例子说明了一切。我从网站meetcoresonline.com/help
中包含了这个Xml文档的链接[此页面的Xml] http://www2.meetscoresonline.com/Resources/projectFlx/Help/help.xml
[此页面的Xsl] http://www2.meetscoresonline.com/Resources/projectFlx/Help/help.xml
[更极端的Xslt示例] http://www2.meetscoresonline.com/Resources/projectFlx/Register/Register.xsl
ProjFlx内容可以分发到您的CDN,因此您可以完全分离Web内容和二进制文件。
ProjFlx是一个开源项目,连同它的.Net src。
ProjFlx代码是用C#编写的。 Projflx核心暴露3层,TMPLT / SITE / PAGE。每个都有一个INIT / MAIN / TERMINATE。 TMPLT MAIN调用SITE INIT然后SITE MAIN然后SITE TERMINATE和SITE MAIN调用PAGE INIT / PAGE MAIN / PAGE TERMINATE。在您的代码中,(典型的)覆盖每个虚拟SITE方法,然后按页面请求为页面编写必要的业务逻辑。
ProjFlx不是MVC,ProjFlx不是Windows Forms,它是自己的Web框架,在后端利用C#.NET,Xml / Xslt生成内置Twitter Bootstrap的HTML.ProjFlx包含自己的内置自定义数据层用于生成&#34; good&#34;的XmlWriter操作Xml(不是你得到的Xml和ADO.Net记录集)。这个数据类甚至会爆炸json&#34;从数据库中的字段到Xml。假设您有一些字段,其内容为:
{ "ProjFlx": { "Version":"1.0", "License":"Open" }}
在您生成的Xml中爆炸为:
<ProjFlx>
<Version>1.0</Version>
<License>Open</License>
</ProjFlx>
我希望你看看!
答案 1 :(得分:0)
这是一个纯粹使用XSLT的解决方案。
主页将是......
<html>
<head>
<title>ACME Corporation Support Page</title>
<link href="support.css" rel=stylesheet type="text/css">
<!-- Use support.css to style the page, as you please. -->
<script type="text/javascript" language="javascript" src="js/Saxonce/Saxonce.nocache.js"></script>
<script type="application/xslt+xml" language="xslt2.0" src="support.xsl" data-source="Links.xml"></script>
<style>
span.pseudo-a { /* Mimic an 'a' element. */
cursor:pointer;
color:blue;
text-decoration:underline;
}
span.pseudo-a:hover {
color: #444444;
</style>
</head>
<body>
<form>
<h3>ACME Corporation - Our Products</h3>
</form>
<table>
<tbody>
<tr>
<td id="left-pane">
</td>
<td id="right-pane">Click an application link on the left-hand panel for more information.
</td>
</tr>
</tbody>
</table>
</body>
</html>
链接数据文件将如下所示...... (相对网址Links.xml
)
<Links>
<link>
<url>Application 1</url>
<FilePath>app-meta/App1.xml</FilePath>
</link>
<link>
<url>Application 2</url>
<FilePath>app-meta/App2.xml</FilePath>
</link >
<link>
<url>Application 3</url>
<FilePath>app-meta/App3.xml</FilePath>
</link >
</Links>
* ...特定于应用程序的文件将如下所示...... (相对网址如app-meta/App1.xml
等)。
<Contents>
<Header> Help Path for Application 1</Header>
<Summary> This application is used to raise new requests to create User ID's. It has workflow attached to it which can be used.
</Summary>
<Support>
<Email>abc@gmail.com </Email>
<Phone> +1 82828 29282 2727 </Phone>
<Text> Please contact George in department </Text>
</Support>
<FAQS>
<FAQ>
<QUESTION> For installation what I should Do</QUESTION>
<ANSWER> Click on this link. And download the installer. Please note that you need Admin rights for it. </ANSWER>
<ANSWER> If you are on company network then it can be installed through My Portal </ANSWER>
</FAQ>
<FAQ>
<QUESTION> Question 2</QUESTION>
<ANSWER> Answer 1 </ANSWER>
<ANSWER> Answer 2 </ANSWER>
<ANSWER> Answer 3 </ANSWER>
</FAQ>
</FAQS>
</Contents>
此XSLT 2.0样式表将根据需要设置xml数据样式。(相对网址support.xsl
)
<xsl:transform
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ixsl="http://saxonica.com/ns/interactiveXSLT"
xmlns:prop="http://saxonica.com/ns/html-property"
xmlns:style="http://saxonica.com/ns/html-style-property"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs prop"
extension-element-prefixes="ixsl"
version="2.0">
<xsl:template match="*" mode="#all" />
<xsl:template match="/">
<xsl:result-document href="#left-pane" method="ixsl:replace-content">
Application List
<ul>
<xsl:apply-templates select="Links/link" mode="left-pane" />
</ul>
</xsl:result-document>
</xsl:template>
<xsl:template match="link" mode="left-pane">
<li>
<span FilePath="{FilePath}" class="pseudo-a">
<xsl:value-of select="url"/>
</span>
</li>
</xsl:template>
<xsl:template match="span[@FilePath]" mode="ixsl:onclick">
<xsl:result-document href="#right-pane" method="ixsl:replace-content">
<xsl:apply-templates select="document(@FilePath)" mode="right-pane" />
</xsl:result-document>
</xsl:template>
<xsl:template match="Contents" mode="right-pane">
<h3><xsl:value-of select="Header"/></h3>
<p><xsl:value-of select="Summary"/></p>
<h4>For Support</h4>
<p>Email: <xsl:value-of select="Support/Email" /></p>
<p>Phone: <xsl:value-of select="Support/Phone" /></p>
<p><xsl:value-of select="Support/Text" /></p>
<xsl:apply-templates select="FAQS" mode="#current" />
</xsl:template>
<xsl:template match="FAQS" mode="right-pane">
<h4>FAQS</h4>
<xsl:apply-templates select="FAQ/(QUESTION | ANSWER)" mode="#current" />
</xsl:template>
<xsl:template match="QUESTION" mode="right-pane">
<h5><xsl:value-of select="." /></h5>
</xsl:template>
<xsl:template match="ANSWER" mode="right-pane">
<p><xsl:value-of select="." /></p>
</xsl:template>
</xsl:transform>