Over the past few years, there have been an increasing number of Web applications that exchange various types of data on the Internet. In this article, we propose a technique for building efficient and scalable XML publish/subscribe applications. In particular, we look at the problem of processing streaming XML data efficiently against a large number of branch XPath queries. To improve the performance of XML data processing, the branch queries that have similar query characteristics are grouped, and common paths between the queries in the same group are identified. Then, these groups of queries are processed against an XML schema to validate query structures. After performing structural matching of queries, the queries are organized in a way that multiple queries can be evaluated simultaneously in the post-processing phase. In the post-processing phase, join operations are executed in a pipeline fashion, and intermediate join results are shared amongst the queries in the same group. The benefit of this approach is that, the total number of join operations performed in the post-processing phase is significantly reduced. In addition, we also present how to efficiently return all matching elements for each matching branch query. Experiments show that our proposal is efficient and scalable compared to previous works.